以下查询花费太多时间,很可能是因为"不在"使用.
你能建议改进吗?
SELECT vcode,
vname,
1014 AS fid
FROM testcodes co
WHERE co.vcode NOT IN (SELECT dict.vcode
FROM datadictionary dict
WHERE dict.fid = 1014)
Run Code Online (Sandbox Code Playgroud)
关于结构的一件事是.vCode,vName是varchar,testCodes和DataDictionary具有相同的结构.
我搜索了这个问题,发现左连接可以解决这个问题?(为什么它做得更好,如何做到)?
有人可以指导它是否可以改进???
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
Run Code Online (Sandbox Code Playgroud)
您需要创建索引:
两者都在每个表上执行单个索引扫描,但IN具有合并连接,INNER JOIN具有哈希匹配.