0

我正在 SQL 2014 上的内存表中进行测试,并且特定查询的执行计划在 tempdb 中显示了排序。

在此处输入图像描述

该查询在内存中的两个表(在两个表中都有非聚集索引的字段上)和一个带有一些总和和计数的 group by 之间有一个连接 - 服务器有足够的 RAM 可用。

如果表是“在内存中”,为什么在 tempdb 中对查询进行排序?

我还想知道如果内存表中不允许“创建索引”语句,为什么 SQL 建议创建索引。

4

2 回答 2

1

此查询正在互操作模式下运行。这使用了普通的查询处理器,只是它从 Hekaton 表中提取数据。否则没有我能想到的变化。

如果有的话,你从 Hekaton 那里获得的加速是非常有限的。

您不能使用该create index语句,但可以在创建表时创建索引。

于 2016-02-22T11:07:53.523 回答
1

数据可能存储在内存中,但查询处理器仍然只能使用在其内存授权中提供的内存来实际执行查询,如果排序运算符所需的内存由于优化器的估计不佳而超过此值,它将以与使用基于磁盘的表的查询相同的方式溢出。

于 2016-02-22T11:51:12.140 回答