在这两个查询之间,哪个查询数据库执行得更快?
select a, b, c from t where x = y or x = z;
vs。
select a, b, c from t where x = y;
select a, b, c from t where x = z;
对于我的应用程序来说,任何一种都适用,因为结果将放入映射中,该映射将自动删除重复项。因此,我想知道是否有技术原因,一个比另一个更可取。
答案 0 :(得分:2)
如果您在x
上有一个索引并且y
和z
是常数,则它们应该几乎相同。
如果y
和z
是列,那么索引将无济于事。如果无法使用索引,则带有or
的版本应该快两倍,因为它只扫描表一次而不是两次。
答案 1 :(得分:1)
当您从具有两个不同条件的单个表中选择相同的列时,可以尝试并运算符
Select a,b,c from tab1 where d=cond1 union select a,b,c from tab1 where d=cond2