2016-03-08 58 views
0

我有以下的SQL。这个工作正常,但需要很多时间,因为文件ar和py都包含大量的记录。有没有办法限制从部分sql的文档加入?因此,只有加入articlenumber(ararnr)1002032,1904140等等SQL限制与范围连接

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"; 

通过我使用的DB2 for I系列SQL

+0

编辑您的问题并提供合格的列名,以便读者知道列的来源。 –

+0

在ON条件中使用的列上创建非聚集索引,并在非聚集索引的INCLUDED中包含选择列表列 –

回答

1

您的查询没有意义的方式,因为你有一个left join条件表中on条款。我假设你打算:

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)指标。这可能会提高性能。