先谢谢你们,快速查询下面的内容:
我有一个查询,点击一个10列-14,000,000行表,Id表示聚簇索引,f_date表示非聚集索引。
我还做了两个左连接到非常小的表...我有一个where子句:
在哪里F_date> =' 20131212'
(该陈述应返回约400万行)
该语句需要数小时才能运行...我将表移到另一个框中,我发现如果没有聚簇索引并且只有非聚集索引在几秒钟内运行,这怎么可能?
此外,在新框中,我创建了群集密钥,再次花费数小时,我将其删除并在几秒钟内运行!为什么呢?!
我看到的一件事是,在sys.dm_exec_query_memory_grants中,当它运行缓慢时,它被分配了20MB ...当它在几秒钟内运行时它获得5GB授权......
因此,没有聚集索引=授予大量内存=以秒为单位运行。 使用聚簇索引= 20MB =以小时为单位运行。 ?!?!
ps:连接也会抛出警告,因为我将varchar连接到nvarchar。