sql 限制加入范围

sql limit join with a scope

我关注sql。这个工作正常但需要花费大量时间,因为文件 ar 和 py 都包含大量记录。有没有办法从 sql 的一部分限制对文档的连接?所以只加入articlenumber (ararnr) 1002032 , 1904140 etc...

SELECT ararnr,ararir,pyarnr,pypykd,pyarpy
FROM ar left join
     py
     on ar.ararnr = py.pyarnr and pypykd ='C' and
        ararnr in '1002032','1904140', etc..
ORDER BY case when ararnr='1002032' then 1 ararnr ='1904140' then 2 etc... end";

顺便说一句,我在 I 系列中使用 DB2 sql

您的查询没有意义,因为您在 on 子句中的 first table 上有条件 left join .我假设你打算:

SELECT ararnr, ararir, pyarnr, pypykd, pyarpy
FROM ar left join
     py
     on ar.ararnr = py.pyarnr and py.pypykd ='C' 
WHERE ar.ararnr in ('1002032', '1904140', . . .)
ORDER BY case when ararnr='1002032' then 1 ararnr ='1904140' then 2 etc... end";

对于此查询,您需要 ar(ararnr)py(ararnr, pypkd) 上的索引。这可能会提高性能。