这是 mysql 的特有的关键字,与此对应使用的 函数是 FOUND_ROWS()
在写分页程序时,常用的一条语句是:
SELECT COUNT(*) FROM ... WHERE ...
当然还有另外一种统计所有记录的语句:
SELECT SQL_CALC_FOUND_ROWS ... FROM ... WHERE
执行完上面的语句后,再执行SELECT FOUND_ROWS()
即可得到所有记录数
在实际使用中这两者性能差异大吗?特别是在数据量达百万级以上的时候?
PS:没有人回答是因为 很少人使用吗?
分割线根据 cute 同学提供的链接,在 MySQL 客户端版本: mysqlnd 5.0.8-dev - 20102224 上进行测试,查询速度确实是 SELECT COUNT(*) FROM ... WHERE ...
快很多,这就是所谓的实践出真知,谢谢 cute 同学。
SQL_CALC_FOUND_ROWS在速度上会比COUNT(*)慢很多,具体有多慢,取决于你的索引还有一些别的因素,
count大约要比SQL_CALC_FOUND_ROWS快上10倍.
相关连接:
http://www.mysqlperformanceblog.com/2...
不好意思,我没有这么用过。当然不是因为性能不性能的原因
一般来说,当查询条件一样的时候,mysql本身会缓存结果(和预设值有关)。如果我一直select count(*) ,是否代表了这个结果集,我都是用的缓存中的?
既然这样,那我为什么需要用上SQL_CALC_FOUND_ROWS呢?
http://www.tantengvip.com/2013/11/sql_calc_found_rows/ 方便读取条数