在DB2中使用子句IN或OR组合的情况下,这将表现得更好

时间:2018-02-06 09:43:05

标签: performance db2 conditional

方法-1: 从中选择* col1 in('A','B','C') 和col2 ='某事' 方法2: 从中选择* 其中(col1 ='A'或col1 ='B'或col1 ='C') 和col2 ='Something'

这种方法更好。考虑到查询将在Zlinux db2 10.5中运行50K。

1 个答案:

答案 0 :(得分:0)

你应该总是在寻求帮助时给你的Db2平台(z / os,i-series,linux / unix / windows)和Db2版本,因为这些会影响答案

您可能会发现Db2优化器会自动将Approach-2重写为Approach-1,具体取决于您的配置 - 这意味着两个语句将使用相同的访问计划。您可以通过研究两个语句的访问计划来证明这一点,查询重写会清楚地显示出来。

要查看解释计划,请了解如何使用工具db2explndb2exfmt(最佳)和“explain plan用于SELECT ...”。

一些GUI工具具有内置支持,可让您查看访问计划,例如IBM Data Studio和DB-Visualizer等。

documentation中描述了将查询重写为语义等效且更易于优化的语句。

相关问题