2017-02-15 41 views
1

有很多關於索引列順序的文章,我明白了。但是,我沒有發現關於唯一索引的內容。唯一索引列順序 - 它很重要嗎?

簡單的例子:身份IdProductIdCategoryId:使用ProductCategoryMapping表3列具有N-N關係ProductCategory表。

如果我創建唯一索引UN_ProductCategoryMapping_Product 2列:ProductIdCategoryId,我也應該建立在相反的順序另一種獨特的指數,假設我有時會想「列表中選擇一個類別的所有產品」,有時「列表中的所有類別一個產品屬於「?

在這種情況下,SQL Server是否足夠聰明以優化?

+3

如果你有一個電話號碼簿,列出每個人的姓氏,名字順序,如果你想知道每個姓氏的共同點,你認爲這會有多大用處? –

+0

這些列順序中的每一個的唯一索引將有助於支持這些搜索情況中的每一個。 – SqlZim

回答

2

唯一性不依賴列順序。如果您聲明第1,2和3列的組合是唯一的,並且其他人聲明第2,1和3列的組合是唯一的,則說明了相同的事實。

但這並不是說所有的指標都是平等的,或同樣有用的。索引只有(可能)有用,如果你可以使用他們所有的最左邊的列。如果您有一個查詢不使用任何索引的最左側列,則滿足查詢的唯一方法是掃描整個表。

+0

SQL Server可以決定掃描索引而不是表,因此索引 - 甚至可以用於查詢第二個索引列。這通常發生在索引與表(或聚簇索引)相比較小時,並且所需的查找量很少或沒有。 –