【问题标题】:MySQL pagination. Check if last record is reachedMySQL分页。检查是否达到最后一条记录
【发布时间】:2015-05-31 23:26:33
【问题描述】:

我正在尝试使用 LIMITOFFSET 和 MySQL 来实现分页。在每个数据库查询中,我想检查是否到达表中的最后一条记录。对此最好的方法是什么?我是否应该对COUNT 使用另一个查询,然后将其与OFFSET 进行比较?

【问题讨论】:

    标签: mysql sql pagination limit offset


    【解决方案1】:

    你可以使用sql_calc_found_rows,它让MySQL计算如果没有限制会返回多少行:

    SELECT SQL_CALC_FOUND_ROWS ... FROM ... WHERE ... LIMIT x,y
           ^^^^^^^^^^^^^^^^^^^
    

    那么你可以使用

    SELECT found_rows();
    

    检索该计数。它仍然是两个单独的查询调用,但 found_rows() 调用非常便宜,因为主要的 SELECT 已经完成了繁重的工作。

    您可以使用 COUNT() 执行两个单独的查询,但是您正在复制工作并丢弃大部分工作。

    【讨论】:

    • 我一直在使用 COUNT(*) 获取行数,同时删除字段和限制子句,同时保持连接和 where 子句的完整。对 SQL_CALC_FOUND_ROWS 一词的粗略搜索表明,使用一个查询与两个查询是否更好/更快的问题最好由“依赖”(叹气)来回答。根据您的模式、数据集和 where 子句的大小/复杂程度,进行时间测试并比较每种方法可能不会有什么坏处。
    猜你喜欢
    • 2012-06-14
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多