首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

MySQL查詢優化實戰案例:避免全表掃描的關鍵技巧

     編輯:PHP 相關知識

案例背景

雖然在customer_num和order_num上建有索引,但優化器仍選擇全表掃描。原因在於查詢需檢索離散的行集合,導致索引範圍掃描代價過高。

優化方案

將單條複雜查詢拆分為多條簡單查詢,或使用UNION ALL合併結果集,引導優化器走索引路徑。具體改寫示例:

-- 原語句導致全表掃描
SELECT * FROM orders WHERE customer_num IN (101, 205, 309);

-- 優化:拆分為多條索引查詢
SELECT * FROM orders WHERE customer_num = 101
UNION ALL
SELECT * FROM orders WHERE customer_num = 205
UNION ALL
SELECT * FROM orders WHERE customer_num = 309;

核心原則

當IN列表值較少且列有索引時,拆分查詢往往比單條IN查詢更高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved