在DB2中,在哪里使用IN或OR的组合,哪个性能会更好

By simon at 2018-02-07 • 0人收藏 • 49人看过

方法1:从Table中选择,其中col1位于('A','B','C')和 col2 ='Something'方法-2:从_Table_中选择 where(col1='A'或col1 ='B' 或col1 ='C')和col2 ='东西' 这里哪种方法更好。考虑到查询将运行在50K英寸 ZLlinux db2 10.5。

1 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

你应该ALLways给你的Db2平台(z / os,i系列, linux / unix / windows)和Db2版本的时候请求帮忙se可以 影响答案。 您可能会发现Db2优化器会自动将Approach-2重写入 方法1,依赖依靠你的配置 - 意味着相同的访问计划 然后将用于这两个语句。你可以通过学习来证明这一点嗯 两个语句的访问计划,查询重写都清晰地显示出来。 要查看解释计划,请了解如何使用工具 [的DB2expln](https://www.ibm.com/support/knowledgecenter/en/SSEPGG11.1.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0005736.html), [DB2EXFMT](https://www.ibm.com/support/knowledgecenter/en/SSEPGG11.1.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0002353.html) (最好)和[解释在 计划(https://www.ibm.com/support/knowledgecenter/en/SSEPGG10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000952.html) 对于SELECT......“。 一些图形用户界面工具有内置的支持,让你看到访问计划 例如IBM Data Studio和DB-Visualizer之中其他。 将查询重写为语义等价,更易于优化 报表中描述的是 [documentat离子](https://www.ibm.com/support/knowledgecenter/en/SSEPGG11.1.0/com.ibm.db2.luw.admin.perf.doc/doc/c0005293.html)。

登录后方可回帖

Loading...