2016-04-29 27 views
0

我有以下简单的查询:避免排序警告在执行计划

create table #Table(Id bigint primary key clustered) 


insert into #Table (Id) 
select Id 
from dbo.MyTable 
where InsertDate >= '01.04.2016' 
     and InsertDate <= '30.04.2016' 
option (maxdop 1) 

但在执行计划,我总是得到一个排序警告,甚至我也不想用排序。我怎样才能避免这种(排序交战)? 谢谢 enter image description here

+0

可能的重复... http://stackoverflow.com/questions/14219533/why-is-there-a-sort-showing-up-in-my-execution-plan – William

+0

谢谢,我解决了我的问题 FYI :选项(重新编译,maxdop 1) :) :) :) – JassyJov

回答

0

为什么要避免排序?

查询优化程序发现它正在插入一个表,其中集群主键为。在这种情况下,SORT必须发生,因为这是数据将被物理存储的方式。

至于为什么这种排序有警告,估计的行数与查询中的实际行数之间存在差异。 您似乎有一个dbo.MyTable索引满足您的查询,但有残留谓词或统计过期或任何数量的其他潜在问题产生预计行数和实际行数之间的差异。

但最后我们回到你为什么想要这个?