有两个查询,一个是OR,一个是IN(),是否具有相同的性能?
有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上有一个索引。
有两个查询,一个是OR,一个是IN(),是否具有相同的性能?
有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上有一个索引。
这应该取决于。
正如你在评论中所说的那样,有很多变数。
最好的方法是针对每个特定查询运行某种解释计划,并查看特定数据库加载的特定数据和特定查询之间的差异(如果有的话)。
在风格上,这不是问题,我个人更喜欢在这些情况下的IN子句。
大多数(如果不是全部的话)查询优化器会在选择执行计划之前将其中一个表单重写为另一个表单。所以这两个将会有相同的表现。
一般不! OR运算符比IN运算符更灵活,可用于评估更多条件。
尽管使用IN运算符(包含)的任何条件都可以使用OR运算符替换为相同的运算符,但事实并非如此:涉及OR运算符的条件真的很多使用IN运算符没有相同的条件。
这意味着当使用适当的操作符(IN)而不是更通用的操作符时,可以更好地识别内含物,从而可以高效地对它们进行详细阐述。
为什么不只是运行它们并亲自查看? – 2012-02-04 12:53:38
因为我不确定这不取决于行大小,索引类型,行数量等。 – user710818 2012-02-04 12:57:31