有没有办法在DB2查询中避免使用“case”来获得更好的性能

时间:2012-11-27 09:24:38

标签: db2 query-optimization

请找到以下查询并建议我避免大小写并重写以下查询。

select A.ID, CASE B.ID IS NOT NULL THEN B.ABID
             ELSE B.XYID  END AS ABXYID
FROM Table_A A, Table_B B
WHERE A.PK = B.PK

请重新编写上述查询以获得更好的效果。

提前致谢。

1 个答案:

答案 0 :(得分:1)

不完全正在寻找,但COALESCE函数返回其第一个非空的参数。

如果B.ID为NULL时B.ABID也为NULL,那么您可以按如下方式重写代码:

select A.ID,
COALESCE(B.ABID, B.XYID) AS ABXYID
FROM
Table_A A,
Table_B B
Where
A.PK=B.PK

哦,你真的应该使用适当的内部联接:

select A.ID,
COALESCE(B.ABID, B.XYID) AS ABXYID
FROM
Table_A A
INNER JOIN Table_B B
ON A.PK=B.PK