sql-server - smalldatetime 列上的索引
问题描述
我有一个包含以下列的表格
[ID] [int] IDENTITY(1,1) NOT NULL,
[Timestamp] [datetime] NOT NULL,
[Datestamp] [smalldatetime] NOT NULL,
[Message] [nvarchar](max) NULL
ID 列上有聚集索引和 PK。
Datestamp 上也有非聚集索引。
Datastamp 列包含格式为 2021-10-04 00:00:00 的日期
我读到的是 Datestamp 列上的索引将优化日期过滤。实际上,这是选择按日期过滤的 ID 时的查询计划。
select ID
from [Log]
where [Datestamp] > '2020-01-01' and [Datestamp] < '2021-09-01'
order by datestamp
但是,当我在 Datestamp 上选择 Message 和 filter 时,我可以看到查询计划现在涉及 Sort 运算符,这会使该查询无法执行。此外,不再使用 Datestamp 上的非聚集索引。
select Message
from [Log]
where [Datestamp] > '2020-01-01' and [Datestamp] < '2021-09-01'
order by datestamp
知道为什么会这样吗?
为什么选择 Message 列时使用非聚集索引?
解决方案
推荐阅读
- javascript - 邮递员预先请求一切正常,但面临未定义的错误
- javascript - 如何将日期从一个日期输入设置为另一个日期输入?
- apache-camel - 如何在 apache camel DSL 中从端点动态返回
- ruby-on-rails - 关联和视图限制的最佳做法是什么?
- javascript - Firebase 弹出式登录弹出窗口关闭用户错误
- github - 在 Github 中创建一个“发布”条目
- python - threading.Timer 如何在内部(低级线程)等待?
- python - 在python中的分区上滚动总和
- mysql - 查询 SQL Server 表的行之间的成对关系的重复结果
- python - K-means,计算我的质心的新位置