首页 > SQL语句中 SQL_CALC_FOUND_ROWS 的使用与否

SQL语句中 SQL_CALC_FOUND_ROWS 的使用与否

这是 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/ 方便读取条数

【热门文章】
【热门文章】