0

我有一个查询如下:

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');

如果可能的话,我还需要了解性能优势。

提前致谢

4

2 回答 2

2

仅在 3 值检查的情况下,查询并不重要。

无论如何,Oracle 都会重新编写查询以匹配可用的最佳选项。

如果有更多的值并且过于动态,那么 in 子句或内部连接可能会更好。

最好将查询保留为当前状态

于 2013-03-11T09:41:49.120 回答
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”条件中列出的必需值。

于 2013-03-11T09:27:43.350 回答