我的查询如下:
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');
如果可能,我还需要了解性能优势。
提前致谢
答案 0 :(得分:2)
在仅进行3次值检查的情况下,查询无关紧要。
Oracle将重新编写查询以匹配可用的最佳选项。
如果有更多的值且太动态,那么in子句或内部连接可能会更好。
最好保留当前的查询
答案 1 :(得分:1)
第三种方式比“IN”或多种“WHERE”条件更快:
select *
from table_1 as tb1
inner join table_2 as tb2
where tb1.column_name = tb2.column_name
这里table_2(或查询)将具有在示例中的“IN”和“WHERE”条件中列出的必需值。