gpt4 book ai didi

sql - 使用 DateTime WHERE 子句查询大表

转载 作者:行者123 更新时间:2023-12-01 22:56:01 24 4
gpt4 key购买 nike

我正在尝试使用 WHERE 子句中的日期时间列从相当大的表(大约 9800 万行)查询数据。大约需要 12 分钟才能完成——这显然是 Not Acceptable 。查询很简单:

SELECT ID, DateTime1, DateTime2, Value1, Value2
FROM dataTable
WHERE DateTime1 >= '2017-05-15 09:00' AND
DateTime1 <= '2017-05-15 09:30'

该表具有以下结构:

Column Name | DataType
-------------------------
ID | float
DateTime1 | datetime
DateTime2 | datetime
Value1 | float
Value2 | varchar(20)

该表具有以下索引:

Nonclustered: DateTime1, DateTime2, ID, Value2

最佳答案

在 SQL Server 中:

您的索引不覆盖 Value1,因此如果它使用您现有的索引,则必须从表中检索每一行的该列。

您可以创建一个覆盖索引(包括查询所需的所有列),如下所示:

create nonclustered index ix_dataTable_DateTime1_cover 
on dbo.dataTable (DateTime1)
include (Id, DateTime2, Value1, Value2);

或修改现有索引以包含 Value1

另外,检查执行计划。如果仍然存在性能问题,请使用 Paste The Plan @ brentozar.com 共享您的执行计划以下是说明:How to Use Paste the Plan .

关于sql - 使用 DateTime WHERE 子句查询大表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43979548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com