我有一個表格,可以過濾三列的資料:國家、州、城市。
我的應用程式中的查詢變得更有選擇性,但總是包含更通用的列。例如,WHERE子句看起來像
WHERE Country = 'Canada'
WHERE Country = 'Canada' AND State = 'Ontario'
WHERE Country = 'Canada' AND State = 'Ontario' AND City = 'Toronto'
但不會WHERE只在 City 列或 State 列上有一個子句。
我的任務是為這個表創建一個索引。而且我知道列順序在創建索引時很重要,但對什么會更高效感到困惑。
這是我正在考慮的兩個選項:
選項1:
(Country, State, City)
選項 2:
(City, State, Country)
(State, Country)
(Country)
第一個選項涵蓋一個索引中的所有查詢。但是第二個選項(我認為)會表現更好。我想問的是,使用選項 2 是否有實際的性能優勢?
想法?
對不起,如果我沒有多大意義。讓我知道是否需要澄清。謝謝!
uj5u.com熱心網友回復:
絕對選擇選項1。
這允許為您識別的所有三個查詢模式尋找完全正確的行(即不多也不少)。
如果您從不單獨基于該列進行查詢,那么首先使用最具選擇性的列排序索引沒有任何優勢。該單列的選擇性對于在多列上查找的查詢沒有影響。
“最有選擇性的優先”這個比喻在 SQL Server 社區中是一個被誤解的領域。我在這里更詳細地介紹。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/406359.html
標籤:
上一篇:獲取結果的MSSQL查詢
