【发布时间】:2015-08-12 13:41:24
【问题描述】:
我有一个包含大量数据的表,我想使用日期范围查询它。
这是查询
SELECT TOP (10000)
[PositionId] AS [PositionId],
[DeviceId] AS [DeviceId],
[Course] AS [Course],
[Latitude] AS [Latitude],
[Longitude] AS [Longitude],
[Speed] AS [Speed],
[MomentTiming] AS [MomentTiming],
[Fuel] AS [Fuel],
[Ignition] AS [Ignition]
FROM
[PositionInsights]
WHERE
deviceId = 352
AND [MomentTiming] >= '8/12/2015 7:38:00 AM'
AND [MomentTiming] <= '8/12/2015 3:38:00 PM'
问题是这个简单的查询花费了太多时间,大约 35 秒
【问题讨论】:
-
表中有多少条记录?
-
表上有哪些索引?如果
deviceId字段上没有索引,则在该字段上添加索引将提高性能。什么是聚集索引?如果这是针对该表运行的最常见(频繁)查询,我建议在列deviceId、MomentTiming以及任何主键列上使用一个集群索引。 -
访问此链接可能会有所帮助,stackoverflow.com/questions/1716798/…
-
@NickBullatovci 百万记录
-
@CharlesBretana 唯一存在的索引在主键 positionId 上
标签: sql-server