2017-03-04 54 views
0

我期待做一个索引寻找,请记住我是一个新手在索引,是否有可能实现索引寻找如果我要使用冒险工程运行folling 。最好的方式索引检索数据使用订购

select BusinessEntityID, FirstName, MiddleName, LastName, ModifiedDate 
from dbo.person 
order by ModifiedDate 

我已经创建了下面的非聚集索引:

create index IX_ModifiedOn on [dbo].[person] (ModifiedDate Asc) 

我似乎并没有越来越索引查找望着查询执行计划。我只想知道在ModifiedDate上订购索引的方法吗?

也有是在BusinessEntityID作为其主键

谢谢你一个聚集索引

+1

如果合适,SQL Server将使用该索引。如果数据太小,优化器可能会决定实际进行排序比使用索引要快。 –

+0

嗨戈尔丹,谢谢你,我实际上是在2700万行的工作桌上尝试这个。我只是用冒险来模拟同一个校长。但有可能哟实现索引这种方式在modifiedDate上? – abs786123

+0

您在一个查询中选择了2700万行,没有“where”或“join”? – SqlZim

回答

1

既然你没有任何过滤器选择整个表或联接,你不会得到一个索引查找,除非索引也涵盖了你的查询。否则,引擎将不得不返回到桌面以获取您正在选择的列。这将是您的示例的覆盖索引。

create index IX_ModifiedOn on [dbo].[person] (ModifiedDate Asc) 
    include (BusinessEntityID, FirstName, MiddleName, LastName); 
+0

的Data Ware Housing场景中创建一个临时表格干杯,我仍然得到90%的成本。无论如何要减少?我只想选择整个表格,但通过降低订购成本 – abs786123

+0

@ abs786123然后,您的示例可能不会准确地描述您的实际情况。这不会在Adventureworks上产生'sort'操作,下面是创建该索引后的执行计划:https://www.brentozar.com/pastetheplan/?id=H10-0jY9x – SqlZim