首页 >数据库 >mysql教程 >如何使用 OFFSET 和 LIMIT 高效获取分页 MySQL 查询的结果总数?

如何使用 OFFSET 和 LIMIT 高效获取分页 MySQL 查询的结果总数?

Patricia Arquette
Patricia Arquette原创
2024-12-01 00:36:12738浏览

How Can I Efficiently Get the Total Count of Results for Paginated MySQL Queries Using OFFSET and LIMIT?

确定带偏移量和限制的分页 MySQL 查询的总结果

在 PHP/MySQL 中实现分页时,确定结果总数为对于计算页数至关重要。不要运行查询两次,而是考虑使用 SQL_CALC_FOUND_ROWS。

示例:

SELECT SQL_CALC_FOUND_ROWS *
FROM directory_listings
WHERE category_id = ?
LIMIT ? OFFSET ?

此查询检索所需的结果数,同时还计算符合条件的总数行。

// Execute the query with pagination parameters
$results = $db->query($query, [
    'category_id' => $categoryId,
    'limit' => $limit,
    'offset' => $offset
]);

// Retrieve the found row count
$foundRows = $db->query("SELECT FOUND_ROWS() AS num_rows")->row();

// Calculate total pages
$totalPages = ceil($foundRows->num_rows / $limit);

优点:

  • 高效:只需执行一次查询,而不是多次。
  • 准确:提供准确的计数所有符合条件的行,无论

注意:

SQL_CALC_FOUND_ROWS 必须与 LIMIT 配合使用,才能准确计算行数,避免计数错误。

以上是如何使用 OFFSET 和 LIMIT 高效获取分页 MySQL 查询的结果总数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn