2017-10-06 72 views
0

我有一個表[groupmembers]具有三列:SQL Server:如果我總是閱讀「聚集」行,聚集非唯一索引可以提高性能嗎?

[dn] NVARCHAR(255) 
[objectGUID] NVARCHAR(38) 
[member] NVARCHAR(255) 

數據的源是其中值存儲像這樣的表:

<dn>,<objectGUID>,<member|member|member|member|member> 

我有一個SSIS包,其打出[成員]的每個分隔值,併爲每個成員寫入新行,但保留相同的[dn]和[objectGUID]。

因此,包含每個[dn]:[objectGUID]對的成員的所有行將始終按順序寫入。每次加載時表格都會被截斷。

[dn]和[objectGUID]是代表相同源對象的不同唯一值。我有他們兩個,因爲兩個不同的應用程序將分別使用一個查詢[成員]。此外,針對[dn]或[objectGUID]的查詢將(幾乎)總是返回每個關聯的[成員]。

由於[members]將(幾乎)總是一起返回,因此在[dn]或[objectGUID]之一上創建聚簇索引是否合理?

我的假設是,如果行被寫在一起,與他們相似的值聚集在一起,並讀在一起,性能會比非聚集索引更好。

+0

聚集的非唯一索引行爲就像具有唯一性的聚集索引.SQL添加了[uniqueifier以使其唯一](https://stackoverflow.com/questions/4332982/do-clustered-indexes-have-to-be-unique ) – TheGameiswar

+0

你的下一部分問題對我來說還不清楚 – TheGameiswar

回答

0

對我來說,把CI放在dn,objectGUID上是有道理的。

相關問題