gpt4 book ai didi

SQL 查询 'not in' 子句执行时间过长

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

以下查询花费了太多时间,很可能是因为“未使用”。

你能提出任何改进吗?

SELECT vcode, 
vname,
1014 AS fid
FROM testcodes co
WHERE co.vcode NOT IN (SELECT dict.vcode
FROM datadictionary dict
WHERE dict.fid = 1014)

关于结构的一件事是。
vCode,vName 是 varchar
和 testCodes 和 DataDictionary 具有相同的结构。

我搜索了这个问题,发现 left join 可以解决这个问题吗? (为什么它做得更好以及如何做到)?

有人可以指导一下是否可以改进???

最佳答案

SELECT vcode, 
vname,
1014 AS fid
FROM testcodes co
LEFT JOIN datadictionary dict
ON co.vcode = dict.vcode
AND dict.fid = 1014
WHERE dict.vcode IS NULL

您需要在以下位置创建索引:
  • (testcodes.vcode)
  • (datadictionary.vcode,datadictionary.fid)

  • 两者都对每个表进行一次索引扫描,但 IN 具有 Merge Join,而 INNER JOIN 具有 Hash Match。

    关于SQL 查询 'not in' 子句执行时间过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5322161/

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