当您限制通常用于分页的SQL查询返回的行数时,有两种方法可确定记录总数:
方法1 将SQL_CALC_FOUND_ROWS选项包括在原始选项中SELECT,然后通过运行获取总行数SELECT FOUND_ROWS():
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE id > 100 LIMIT 10; SELECT FOUND_ROWS();
方法二 正常运行查询,然后通过运行获取总行数 SELECT COUNT(*)
SELECT * FROM table WHERE id > 100 LIMIT 10; SELECT COUNT(*) FROM table WHERE id > 100;
哪种方法最好/最快?
这取决于。请参阅有关此主题的MySQL Performance Blog帖子:http : //www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/
简要介绍一下:Peter说,这取决于您的索引和其他因素。帖子中的许多评论似乎都说SQL_CALC_FOUND_ROWS几乎总是比运行两个查询要慢-有时要慢10倍。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。