【发布时间】:2015-05-31 23:26:33
【问题描述】:
我正在尝试使用 LIMIT 和 OFFSET 和 MySQL 来实现分页。在每个数据库查询中,我想检查是否到达表中的最后一条记录。对此最好的方法是什么?我是否应该对COUNT 使用另一个查询,然后将其与OFFSET 进行比较?
【问题讨论】:
标签: mysql sql pagination limit offset
我正在尝试使用 LIMIT 和 OFFSET 和 MySQL 来实现分页。在每个数据库查询中,我想检查是否到达表中的最后一条记录。对此最好的方法是什么?我是否应该对COUNT 使用另一个查询,然后将其与OFFSET 进行比较?
【问题讨论】:
标签: mysql sql pagination limit offset
你可以使用sql_calc_found_rows,它让MySQL计算如果没有限制会返回多少行:
SELECT SQL_CALC_FOUND_ROWS ... FROM ... WHERE ... LIMIT x,y
^^^^^^^^^^^^^^^^^^^
那么你可以使用
SELECT found_rows();
检索该计数。它仍然是两个单独的查询调用,但 found_rows() 调用非常便宜,因为主要的 SELECT 已经完成了繁重的工作。
您可以使用 COUNT() 执行两个单独的查询,但是您正在复制工作并丢弃大部分工作。
【讨论】: