哪个在 DB2 中的 where Clause IN 或 OR 组合中表现更好
Which will perform better in where Clause an IN or combination of OR in DB2
方法一:
Select * 来自 Table
其中 col1 在 ('A','B','C')
和 col2='Something'
方法二:
Select * 来自 Table
其中(col1='A' 或 col1='B' 或 col1='C' )
和 col2='Something'
这里哪种方法更好。考虑到查询将 运行 for 50K in Zlinux db2 10.5.
寻求帮助时,您应该始终提供您的 Db2 平台(z/os、i 系列、linux/unix/windows)和 Db2 版本,因为这些可以影响答案。
您可能会发现 Db2-optimizer 会根据您的配置自动将 Approach-2 重写为 Approach-1 - 这意味着相同的访问计划随后将用于两个语句。您可以通过研究这两个语句的访问计划来证明这一点,清楚地显示了查询重写。
要查看解释计划,请了解如何使用工具 db2expln, db2exfmt (best) and 'explain plan 实现 SELECT ...'。
一些 GUI 工具具有内置支持,可让您查看访问计划,例如 IBM Data Studio 和 DB-Visualizer 等。
documentation 中描述了将查询重写为语义等效且更易于优化的语句。
方法一: Select * 来自 Table 其中 col1 在 ('A','B','C') 和 col2='Something' 方法二: Select * 来自 Table 其中(col1='A' 或 col1='B' 或 col1='C' ) 和 col2='Something'
这里哪种方法更好。考虑到查询将 运行 for 50K in Zlinux db2 10.5.
寻求帮助时,您应该始终提供您的 Db2 平台(z/os、i 系列、linux/unix/windows)和 Db2 版本,因为这些可以影响答案。
您可能会发现 Db2-optimizer 会根据您的配置自动将 Approach-2 重写为 Approach-1 - 这意味着相同的访问计划随后将用于两个语句。您可以通过研究这两个语句的访问计划来证明这一点,清楚地显示了查询重写。
要查看解释计划,请了解如何使用工具 db2expln, db2exfmt (best) and 'explain plan 实现 SELECT ...'。
一些 GUI 工具具有内置支持,可让您查看访问计划,例如 IBM Data Studio 和 DB-Visualizer 等。
documentation 中描述了将查询重写为语义等效且更易于优化的语句。