gpt4 book ai didi

sql - 性能 : What's the difference between the two queries

转载 作者:行者123 更新时间:2023-12-04 21:42:56 25 4
gpt4 key购买 nike

我最初写了以下内容

SELECT t1.TransactionNumber
FROM t1
JOIN
(
SELECT MAX(id) id
FROM t1
WHERE Period BETWEEN '01-11-2013' and '01-12-2014'
GROUP BY AccountNumber
) t2
on t1.id= t2.id

但它太慢了。花了大约 20 秒,所以作为测试,我将其更改为以下内容
 SELECT MAX(id) AS id
INTO #t2
FROM t1
WHERE Period BETWEEN '01-11-2013' and '01-12-2014'
GROUP BY AccountNumber

SELECT t1.id
FROM t1
JOIN #t2 t2
ON t1.id= t2.id

第二个查询只用了 1 秒钟运行。第二个查询使用 PK 键进行索引查找,而第一个键进行扫描。

注意:id 是聚集在 t1 表上的主键。

最佳答案

这是一个猜测,但可能是因为主键的统计信息不适合您。如果查询优化器认为您只会从内部联接返回 10 条记录,但您返回了 100 条记录,则它会溢出内存缓冲区,然后最终不得不将子查询的结果写入磁盘。如果您发布查询执行计划结果,它应该变得非常明显。

关于sql - 性能 : What's the difference between the two queries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21926190/

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