在 MySQL 中获取总查询结果(带偏移量和限制)
在分页场景中,确定一个结果中的总结果数至关重要MySQL 查询计算所需的总页数。一种方法涉及运行查询两次,一次有检索分页结果的限制,另一次没有限制计算总行数。但是,这种方法可能效率较低。
输入 SQL_CALC_FOUND_ROWS:更优化的解决方案是在初始查询中使用 SQL_CALC_FOUND_ROWS 修饰符。通过包含此修饰符,MySQL 在应用限制之前计算匹配行的总数。然后,您可以执行 SELECT FOUND_ROWS() 语句来检索总计数。
用法:
要使用 SQL_CALC_FOUND_ROWS,只需将其添加到查询的开头:
<code class="sql">SELECT SQL_CALC_FOUND_ROWS ...</code>
执行查询后,运行以下命令来检索总行数:
<code class="sql">SELECT FOUND_ROWS();</code>
示例:
比方说您有这样的查询:
<code class="sql">SELECT * FROM `directory` WHERE `category_id` = 12 ORDER BY `name` ASC LIMIT 10 OFFSET 20;</code>
要计算结果总数,您将执行以下附加查询:
<code class="sql">SELECT FOUND_ROWS();</code>
这将返回category_id等于12的目录表,可以让你高效的确定分页所需的总页数。
以上是如何通过偏移和限制优化来统计 MySQL 中的总查询结果?的详细内容。更多信息请关注PHP中文网其他相关文章!