Optimization sql 2012引擎没有意义?

Optimization sql 2012引擎没有意义?,optimization,sql-server-2012,database-engine,Optimization,Sql Server 2012,Database Engine,提前感谢各位,下面是快速查询: 我有一个查询,在Id上有一个聚集索引,在f_date上有一个非聚集索引 我还对非常小的表进行了两次左连接…我有一个where子句: 其中F_日期>='20131212' (该语句将返回大约400万行) 该语句需要几个小时才能运行……我将表移到另一个框中,发现如果没有聚集索引,而只有非聚集索引在几秒钟内运行,这怎么可能呢 此外,在新的框中,我创建了集群密钥,它再次需要几个小时,我删除它并在几秒钟内运行!为什么 我看到的一件事是,在sys.dm_exec_query_

提前感谢各位,下面是快速查询:

我有一个查询,在Id上有一个聚集索引,在f_date上有一个非聚集索引

我还对非常小的表进行了两次左连接…我有一个where子句:

其中F_日期>='20131212'

(该语句将返回大约400万行)

该语句需要几个小时才能运行……我将表移到另一个框中,发现如果没有聚集索引,而只有非聚集索引在几秒钟内运行,这怎么可能呢

此外,在新的框中,我创建了集群密钥,它再次需要几个小时,我删除它并在几秒钟内运行!为什么

我看到的一件事是,在sys.dm_exec_query_memory_grants中,当它运行缓慢时,它会被分配20MB…当它在几秒钟内运行时,它会被分配5GB

因此,无聚集索引=授予大量内存=在几秒钟内运行。 聚集索引=20MB=以小时为单位运行。 ?!?!


ps:连接也会抛出一个警告,因为我正在将varchar连接到nvarchar。

最好发布整个查询,以及执行计划、表定义和它们上的任何索引。如果没有这一点,我们将盲目猜测业绩不佳的原因。我们肯定希望看到执行计划。感谢您的及时回复。。。好吧,我从来没有得到一个需要几个小时的实际执行计划,因为在1小时后,看到它只获得5MB的授权,我就终止它。。。但我确实看到了估计值上的懒惰线轴。。。将于短期内更新此信息;但到现在为止,我看到了很多和这个家伙的相似之处嗨,伙计们,谢谢你们的支持。。。最后的问题是我有3个连接,这些连接将varchar(10)连接到nvarchar(255)。。。把引擎搞砸了。。。它使引擎有时为语句分配10mb,有时分配4gb。。。现在我将数据类型更改为匹配,引擎总是为执行提供9GB的语句,并且运行速度非常快。对你们有意义吗?有人有类似的问题吗?