我正在使用MySQL LIMIT一次显示50行(页面),如下所示:
SELECT cols
FROM table
LIMIT 49, 50
对我来说,最有效的方法是确定我的结果集中有多少“页面”(我的查询产生了多少记录)?
在我运行上面的代码之前,我应该运行一个快速而又脏的:
SELECT COUNT(cols)
FROM table
确定结果集中的行数?
(运行2个查询来执行此操作似乎效率低下)
答案 0 :(得分:1)
您可以使用FOUND_ROWS()函数:
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
答案 1 :(得分:0)
我认为你过度优化了。你可以做的唯一一件事就是优化我能想到的分页过程是保持计数在会话中,所以你只在页面导航期间做一次,如果在分页期间添加新项目,那么坏的部分就会很糟糕。
答案 2 :(得分:0)
一种可能性(可能仅适用于某些数据库)是查看查询计划内部以查看优化程序预测的总行数。例如,在Oracle中,您可以访问EXPLAIN计划,并查看优化程序估计总共将返回x行。这当然的准确性取决于许多因素:表格索引的适当程度,统计数据的非陈旧程度等等。