聚簇索引查找和非聚簇索引查找

时间:2014-07-06 19:21:13

标签: sql sql-server sql-server-2012 query-optimization

我正在使用SQL Server 2012数据库,并想获得有关查询优化的知识。这样做我遇到了一个疑问,如果有人可以帮助我,我将不胜感激。

Sales.OrderDetails有两个索引:一个群集在Orderid上,一个非群集在Order id.

第一个问题:当orderid上有聚簇索引时,我们真的需要非聚簇索引吗?

要解决我运行此查询的问题:

select orderid 
from Sales.OrderDetails 
where orderid = 10248

两次;一个启用非聚集索引,另一个启用时禁用。对于早期版本,它执行了非聚集索引查找,并为后者SQL Server执行聚簇索引搜索。实际上,查询成本没有差异。

回到我的问题:我们真的需要在已经有一个非聚集索引的密钥上创建非聚簇索引,这会提高性能吗?

图片1:enter image description here

图片2:enter image description here

1 个答案:

答案 0 :(得分:0)

第一个问题:当我们在某个字段上有一个集群索引时,不需要在该字段上使用非集群索引。

第二个问题:在您的查询中,您只选择OrderId列,在这种情况下,非聚集索引和聚簇索引之间没有任何不同。如果要从Sales.OrderDetail表中选择另一个字段,当然您会看到与聚簇索引和非聚簇索引的性能不同。