再SELECT 一次
$q = "SELECT COUNT(*) FROM `tablename` WHERE `fieldname` like '".$name."' ";
$q = "SELECT COUNT(*) FROM `tablename` WHERE `fieldname` like '".$name."' ";
解决方案 »
- mysql 按id in()排序的问题,
- flush 与 ob_flush 有什么区别啊
- 神奇了 简单数组改值
- php连接mysql,目标计算机积极拒绝
- 网站换了台服务器验证码显示不了,GD库开启了,在线求解决方案
- PHP ascii码解码
- 两数交换,帮忙改一下
- mysql事务中的数据回滚问题!请大家帮帮忙啊!
- 如何读取文件中的固定格式里的数据??
- 有很多不同id的页面,现在要求统计它们一周的访问量,并且给它们排名.应该怎么做?
- 用session_set_save_handler来保存session文件时,sess_gc函数用写删除过期的处理过程吗?因为php.ini中也有这个时间,那么在此处,我还
- 请教一个问题,如何用php来获取当前网页的地址,并且含有参数的。详情请进
不过如果你使用mysq4.0以上版本则情况就要好一些
FOUND_ROWS()
返回最后一个 SELECT SQL_CALC_FOUND_ROWS ... 命令如果没有以 LIMIT 进行限制结果时将返回记录行数。
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();第二个 SELECT 将返回一个数字,它指示前一个没有被 LIMIT 子句限制的 SELECT 将返回多少行记录。注意,如果你使用 SELECT SQL_CALC_FOUND_ROWS ...,MySQL 不得不计算所有的记录行到结果集中。然而,这与你不使用 LIMIT 相比是更快一点的,因为结果集不需要发送到客户端。 SQL_CALC_FOUND_ROWS 从 MySQL 4.0.0 开始可以被使用。
2:用“唠叨”兄的方法,要 0.0761 秒。而单独取前10条数据,才只要 0.0009 秒,看来取总数太浪费时间了。
不过“唠叨”兄的方法,已经提高了一些效率,多谢。
FROM sp_article AS a
LEFT JOIN sp_article AS al ON al.typeid =1101
WHERE a.typeid = 1101
GROUP BY al.articleid
LIMIT 10
FROM sp_article AS a
LEFT JOIN sp_article AS al ON al.typeid =1101
WHERE a.typeid =1101
GROUP BY a.articleid
LIMIT 10