关于count(*)之前写过。
使用count(*)的很多情况是实现分页功能。
如果记录是千万级以上的表,分页显示实际用户很少能浏览全部页数。
基于这个原因,记录总数的计算是没有必要特别精准。换句话说使用一个数量级差不多的估算值也是可以的。
因此,我们就可以通过explain来获得估算值
例如:
explain SELECT COUNT(*) AS AGGREGATE FROM `breed_logs`
执行结果获得rows为20949524
breed_log表实际行数为:22318111
误差大约10%
对于估算值,还有一个方法可以获得。那就是利用mysql的information_schema库。
这个库存有所有库的表的信息,包括行数。
SELECT * FROM information_schema.`TABLES` AS a WHERE a.`TABLE_NAME`=