gpt4 book ai didi

sql - 为什么这两个查询的时间相似(超过 200 万行大约需要 52 秒)

转载 作者:行者123 更新时间:2023-12-02 00:11:12 25 4
gpt4 key购买 nike

我使用的是 SQL Server 2008。

我需要您的建议来了解为什么这两个查询的时间相似(超过 200 万行,大约需要 52 秒):

查询 1:

DBCC DROPCLEANBUFFERS

DECLARE @curr INT
SET @curr = YEAR(GETDATE())

SELECT MAX([Date])
FROM DB_Item
WHERE YEAR([Date]) = @curr

查询 2:

DBCC DROPCLEANBUFFERS

SELECT MAX([Date])
FROM DB_Item

通过使用实际执行计划,我看到它使用聚集索引扫描进行扫描。

那么,为什么会这样?我们是否有另一种方法可以快速获取一张表中 Date 的最大值?

非常感谢您的帮助。

谢谢。

最佳答案

对于第二个查询,您可以通过在日期列上添加索引来加快速度。

对于第一个查询,您需要进行两处更改。首先在日期列上创建索引,然后更改查询以使用 Between 而不是 equals 左侧的函数。搜索目标年份 1 月 1 日上午 12:00 至 12 月 31 日晚上 11:59:59 之间的日期。这样 SQL Server 就可以使用索引。

关于sql - 为什么这两个查询的时间相似(超过 200 万行大约需要 52 秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326725/

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