0

在此先感谢各位,请在下面快速查询:

我有一个查询,命中 10 列 - 14,000,000 行表,在 Id 上有一个聚集索引,在 f_date 上有一个非聚集索引。

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

其中 F_date >= '20131212'

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

该语句需要数小时才能运行......我将表移到另一个盒子,我发现没有聚集索引而只有非聚集索引在几秒钟内运行,这怎么可能?

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

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

因此,没有聚集索引 = 授予大量内存 = 在几秒钟内运行。使用聚集索引 = 20MB = 运行数小时。?!?!

ps:join 也会引发警告,因为我正在将 varchar 加入到 nvarchar。

4

0 回答 0