簡體   English   中英

SQL非聚集索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM