【发布时间】:2013-02-26 09:35:52
【问题描述】:
我有一个查询如下:
select *
from table_1
where column_name in ('value1','value2','value3');
考虑到这样一个表中的数据可能以百万计,下面的重组会更好吗??
select *
from table_1 where
column_name = 'value1'
or column_name = 'value2'
or column_name ='value3';
或
select *
from table_1
where column_name = any ('value1','value2','value3');
如果可能的话,我还需要了解性能优势。
提前致谢
【问题讨论】:
-
IN 和 OR 在理论上是相同的...如果您认为它们不是您的测试所揭示的?你测试过吗?
-
说真的..??我听说存在性能差异,但我无法获得更好的。
-
优化器计算的解释计划中可能存在差异,这将解释性能差异。如果您的测试没有发现这样的问题,那么 specific 查询就没有这个问题。
-
如果有任何区别,很可能是这样:开发人员更有可能将一千个值放入
IN子句中,而不是剪切粘贴一千个or column_name =语句.
标签: sql performance oracle database-performance query-performance