SQL 效能最佳化:比較「SELECT SQL_CALC_FOUND_ROWS...」和「SELECT COUNT(*)」的行數
在SQL 資料庫中最佳化時,確定表中的記錄總數對於分頁和其他操作至關重要。此任務的兩種常用方法是「SELECT SQL_CALC_FOUND_ROWS...」和「SELECT COUNT(*)」。
方法 1:「SELECT SQL_CALC_FOUND_ROWS...」
此方法在初始 SELECT 查詢中使用「SQL_CALC_FOUND_ROWS」選項來準備傳回總行 數數。初步查詢後,您可以使用「SELECT FOUND_ROWS()」檢索總計數。
方法 2:「SELECT COUNT(*)」
或者,您可以使用「SELECT COUNT(*)」執行單獨的查詢來直接計算表。
效能比較
決定行數的最佳方法取決於特定因素。根據 MySQL 效能博客,「SQL_CALC_FOUND_ROWS」的效率會因索引和其他配置設定而異。
專家的觀察
Peter Zaitsev,作者MySQL 效能部落格表明,在大多數情況下,「SQL_CALC_FOUND_ROWS」通常比執行兩個單獨的查詢慢。部落格文章中的許多評論者也指出,「SQL_CALC_FOUND_ROWS」可能會明顯變慢,甚至慢 10 倍。
結論
而「SELECT SQL_CALC_FOUND_ROWS... " 在某些情況下可能是有益的,通常建議對效能關鍵型應用程式使用"SELECT COUNT( *)"其中最小化執行時間至關重要。但是,始終建議使用您的特定資料和配置測試這兩種方法,以確定適合您的用例的最佳方法。
以上是SQL 行計數最佳化:「SELECT SQL_CALC_FOUND_ROWS」與「SELECT COUNT(*)」-哪個比較快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!