IS NULL 的性能优化问题
select distinct A.id from A left outer join B on B.A_id = A.id
where B.A_id is null
如题,以上sql在大数据量的时候(A表7万多条,B表4万多条,inner join匹配条数为3万余条)在DB2中执行的非常缓慢,平均时间会在上1000S以上...
网上查了一下,似乎原因在于DB2的查询优化器在null值的行数很大时会自动选择全表扫描而不是索引扫描?
如此一来如何优化?
PS:问题说白了就是在于取A与B差集的方法中性能最强的是哪种,当前我做过一下改动:
select distinct A.id from A left outer join B on B.A_id = A.id
where A.id not in (select A.id from org inner join B on B.A_id = A.id)
即用NOT IN 代替 IS NULL...
是否会有更优化的方案? 在线等大神解答