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'条件よりも高速な3番目の方法があります。

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 に答える