首頁  >  文章  >  資料庫  >  如何有效地決定分頁 SQL 查詢中的總行數?

如何有效地決定分頁 SQL 查詢中的總行數?

Linda Hamilton
Linda Hamilton原創
2024-10-30 10:44:28709瀏覽

How to Efficiently Determine Total Row Count in Paginated SQL Queries?

透過分頁確定總行數

在 SQL 查詢中實現分頁時,準確地確定總行數至關重要。執行查詢兩次(一次不使用 LIMIT 子句來計算行數,一次使用 LIMIT 子句來擷取分頁資料)可能不是最佳選擇,特別是對於複雜查詢。

幸運的是,MySQL 提供了一個優雅的解決方案: SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 構造。透過將 SQL_CALC_FOUND_ROWS 新增至主查詢,即使存在 LIMIT 子句,MySQL 也會計算總行數。使用 FOUND_ROWS() 的後續查詢將檢索此計數。

以下是一個範例:

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();

此方法比執行查詢兩次更快,並提供準確的總計數。

MySQL 8 中已棄用的函數

在 MySQL 8.0.17 中,SQL_CALC_FOUND_ROWS 和 FOUND_ROWS() 已棄用。對於較新的 MySQL 版本,建議改用 COUNT。

SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;

透過利用這些技術,開發人員可以精確計算分頁 SQL 查詢中的行數,而無需多個查詢的開銷。

以上是如何有效地決定分頁 SQL 查詢中的總行數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn