有2个查询:
select a,b,c,d from test where a=1 or a=2 or a=3
和
select a,b,c,d from test where a in (1,2,3)
哪一个表现更好?在表中,列a有一个索引。
答案 0 :(得分:4)
这应该取决于。
正如你在评论中所说,有很多变数。
最好的方法是为每个特定查询运行某种解释计划,并查看特定数据库与加载的特定数据和特定查询之间的差异(如果有)。
风格上,这不是问题,在这些情况下我个人更喜欢IN子句。答案 1 :(得分:3)
大多数 - 如果不是全部 - 查询优化器会在选择执行计划之前将一个表单重写到另一个表单。所以这两个会有相同的表现。
答案 2 :(得分:1)
一般不会! OR运算符更灵活,可用于评估比IN运算符更多的条件。
虽然使用IN运算符(包含)的任何条件都可以使用OR运算符替换为等效运算符,但另一方面却不是这样:存在大量涉及OR运算符的条件。 t使用IN运算符具有等效条件。
这意味着当使用适当的操作符(IN)而不是更通用的操作符时,可以更好地识别包含物,以便可以有效地阐述它们。