Lan*_*ang 3 sql sql-server sql-server-2008
我正在使用SQL Server 2008.
我需要你的建议,为什么这两个查询得到相似的时间(超过2百万行约52秒):
查询1:
DBCC DROPCLEANBUFFERS
DECLARE @curr INT
SET @curr = YEAR(GETDATE())
SELECT MAX([Date])
FROM DB_Item
WHERE YEAR([Date]) = @curr
Run Code Online (Sandbox Code Playgroud)
查询2:
DBCC DROPCLEANBUFFERS
SELECT MAX([Date])
FROM DB_Item
Run Code Online (Sandbox Code Playgroud)
使用实际执行计划,我看到它扫描Clustered Index scan.
那么,为什么我们有另一种方法可以Date迅速在1个表中获得最大值?
非常感谢您的帮助.
谢谢.
对于第二个查询,您可以通过在日期列上添加索引来加快速度.
对于第一个查询,您需要进行两项更改.首先在日期列上创建一个索引,然后将查询更改为使用between而不是equals左侧的函数.搜索目标年份的1月1日凌晨12:00至12月31日晚上11:59:59之间的日期.这样SQL Server就可以使用索引.
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |