索引最左匹配

在資料庫查詢最佳化中,"索引最左匹配"(Leftmost Index Matching)是一種查詢最佳化策略,用於提高查詢效率。它指的是資料庫管理系統(DBMS)在執行查詢時,優先使用索引的最左列(或最左幾個列)進行匹配,以減少搜尋範圍,加快查詢速度。

例如,假設有一個表 Customers,包含以下列:CustomerID, Name, Address, City, State, ZipCode。我們為 CustomerID, Name, Address, City 創建了一個聯合索引。

CREATE INDEX idx_customers_name_address_city ON Customers (CustomerID, Name, Address, City);

在這種情況下,最左匹配意味著:

  1. 當查詢條件中包含了 CustomerID 的列時,索引會被使用。
  2. 當查詢條件中包含了 CustomerIDName 的列時,索引會被使用。
  3. 當查詢條件中包含了 CustomerID, Name, 和 Address 的列時,索引會被使用。
  4. 當查詢條件中包含了 CustomerID, Name, Address, 和 City 的列時,索引會被使用。

但是,如果查詢條件中只包含了 City 或者 CityState,那麼索引將不會被使用,因為這些列不是索引的最左列。

最左匹配的優點是:

但是,最左匹配也有缺點:

在實際套用中,應該根據查詢模式和表的大小來合理設計索引,以平衡查詢效率和維護成本。