如何使用 SQL_CALC_FOUND_ROWS 高效取得分頁 MySQL 查詢中的行數?

Barbara Streisand
發布: 2024-11-01 03:58:28
原創
343 人瀏覽過

How to Efficiently Get Row Count in Paginated MySQL Queries with SQL_CALC_FOUND_ROWS?

儘管有LIMIT,但仍使用SQL_CALC_FOUND_ROWS 取得行計數

使用分頁(「LIMIT」子句)執行複雜的MySQL 查詢時,取得總行數可能具有挑戰性。執行查詢兩次,其中一次沒有總計數的 LIMIT 子句,效率可能會很低。

幸運的是,MySQL 引入了 SQL_CALC_FOUND_ROWS 選項,它允許您在仍使用 LIMIT 子句的同時計算總行數。其工作原理如下:

  1. 將 SQL_CALC_FOUND_ROWS 新增至您的主查詢:
    在 SELECT 子句之後,將 SQL_CALC_FOUND_ROWS 新增至您的主查詢。
  2. 執行第二個查詢以取得行數:
    使用 FOUND_ROWS() 函數執行第二個查詢以擷取總行數。

範例查詢:

<code class="sql">-- Main query with SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

-- Second query to get row count
SELECT FOUND_ROWS();</code>
登入後複製

限制與替代方案:

雖然SQL_CAL2_CAL的解決方案,但請注意,它的用法在MySQL 8.0.17 中已棄用。在大多數情況下,執行查詢兩次仍然更快。

作為替代方案,MySQL 8.0 引入了以下用於獲取行數的最佳化選項:

  • ROW_COUNT()功能: 傳回上一個查詢傳回的行數。
  • COUNT() 功能: 使用 COUNT(*) 作為子查詢來計算行數。

透過利用這些技術,開發人員可以有效地檢索分頁 MySQL 查詢中的總行數,而不會影響速度或效能。

以上是如何使用 SQL_CALC_FOUND_ROWS 高效取得分頁 MySQL 查詢中的行數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!