PostgreSQL:哪个更快:使用OR子句查询,还是两个单独的查询?

时间:2019-01-14 22:20:09

标签: sql postgresql

在这两个查询之间,哪个查询数据库执行得更快?

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;

对于我的应用程序来说,任何一种都适用,因为结果将放入映射中,该映射将自动删除重复项。因此,我想知道是否有技术原因,一个比另一个更可取。

2 个答案:

答案 0 :(得分:2)

如果您在x上有一个索引并且yz是常数,则它们应该几乎相同。

如果yz是列,那么索引将无济于事。如果无法使用索引,则带有or的版本应该快两倍,因为它只扫描表一次而不是两次。

答案 1 :(得分:1)

当您从具有两个不同条件的单个表中选择相同的列时,可以尝试并运算符

Select a,b,c from tab1 where d=cond1 union select a,b,c from tab1 where d=cond2