[英]SQL non-clustered index
我有一個表,將用戶的權限映射到給定的對象。 因此,它實際上是3個不同表的聯接表。 (對象,用戶和權限)
每3列的每一行的值始終是唯一的,但2列都不是唯一的。
我需要創建一個非聚集索引。 我想將索引放在對象和用戶的外鍵上,但是我想知道是否應該將索引放在所有3列上。
“每行的值對於所有3列始終是唯一的”
您可能想知道SQL Server唯一約束是作為索引實現的。 因此,如果您有(或想要)一個約束來備份您的唯一聲明,則您已經對所有3個索引。
CREATE UNIQUE NONCLUSTERED INDEX idx_unique_perms ON UserPermissions
(
ObjectId ASC,
UserId ASC,
PermissionID ASC
)
如果您要制造一個,請記住要訂購具有高選擇性的色譜柱。
如果您有任何疑問,請對這些表制定要執行的查詢,然后運行SSMS查詢調整向導。 這應該有助於您朝正確的方向開始。
要考慮的一件事是這三個表中的行數。 如果行數很少,則甚至不值得添加索引。 無論如何都可能會進行表掃描。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.