【问题标题】:MYSQL Count all rows and pagination of data using range/limitMYSQL使用范围/限制计算所有行和数据分页
【发布时间】:2011-05-30 06:49:27
【问题描述】:

我不知道这是不是重复的 但这是我的问题..

我正在尝试对从数据库中获取的数据进行分页

我的困境是:

  1. 我是否应该进行分页,分组查询数据,即。 5(使用限制/范围进行选择),然后将它们显示在带有分页的表格中。它将有页码,因此需要计算所有表条目,因此这将是初始显示的 2 个数据库查询。或

  2. 查询所有行条目,然后统计结果集并应用分页。这将删除数据库上的查询计数,但也意味着每次在任何页面上进行单个视图时我都会下载整个数据(但我也可以应用缓存)

和其他建议被高度接受,并提前感谢您

【问题讨论】:

    标签: php mysql count


    【解决方案1】:

    SQL_CALC_FOUND_ROWS

    这将允许您使用 LIMIT 并拥有未使用限制的行数。

    【讨论】:

    • 由于您无法执行mysql_query("query 1; query 2"),因此您需要一一执行这两个查询。
    • 这是一个查询,FOUND_ROWS() 不是对数据库的查询。在内部,它仍然执行 2 次查找,但没有性能损失,然后执行限制查询和单独的计数查询。
    • 在 PHP 中,这个函数仍然需要像查询一样被调用,像这样:mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM foobar LIMIT 0, 10"); echo array_shift(mysql_fetch_assoc(mysql_query("SELECT FOUND_ROWS()"))); -- 两个 mysql_query 虽然这可能不等于两个数据库查询。
    • 重要提示:SQL_CALC_FOUND_ROWS 在 MySQL 8.0 中已弃用,它将在 MySQL 的下一个版本中删除
    猜你喜欢
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2015-12-13
    • 2018-03-19
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多