2017-10-06 77 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上是有道理的。

相关问题