【发布时间】:2025-12-10 15:20:02
【问题描述】:
我想从 DB2 数据库中的表中获取以下数据。
select col1, col2, col3 from employee where employee_id in (1,2,3)
请分享您对查询性能的看法?有其他选择吗?
【问题讨论】:
-
你的桌子上有什么索引?我从未使用过 db2,但一个明显的替代方法是范围搜索
where employee_id >= 1 and employee_id <= 3 -
如果employee_id上有合适的索引,绝对没问题
-
只要
in子句的值部分不是不相关的子选择。在这种情况下,iSeries 上的 DB2 对性能有一些影响(范围选择或实际的join往往性能更好) -
@afuzzyllama - 不了解 db2,但在 SQL Server 中,第二个会有一点好处。
IN将是 3 次索引搜索,这意味着索引从根导航到叶 3 次。BETWEEN将是一个单一的索引导航。这在sqlblog.com/blogs/paul_white/archive/2011/02/16/… 中得到了很好的介绍。据我所知,db2 可能会做一些完全不同的事情。 -
@Martin Smith - 我在 iSeries 上使用 DB2,它是一个不同的野兽......让我告诉你
标签: sql db2 conditional-statements