SQL_CALC_FOUND_ROWS的实现策略是忽略LIMIT得到一个总数,显而易见,它需要拿到你SELECT的所有数据,如果不能用到covering index的话,那这个代价还是比较大的;相反,如果用COUNT(*)的话,只要建立适当的索引就可以很快得到结果,因为不需要
去实际取数据,代价是两次查询。相比而言,mysql一般喜欢比较小的查询,因为现在网络交互的代价应该很小了,而查询越小,mysql的锁
等的开销越小。所以结论就是:尽量不要使用SQL_CALC_FOUND_ROWS而再调用一次COUNT(*)。