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)
上的索引。这可能会提高性能。
我关注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)
上的索引。这可能会提高性能。