1
REGEXP_LIKEのワイルドカード正規表現を使用すると、condition句をまったく含まないよりパフォーマンスが低下しますか?ワイルドカードを使用したOracleの正規表現
例えば、私はOracleは、以下のいずれかのようステートメントを準備作成したい:
select * from table_name
where regexp_like(column1, ?)
and regexp_like(column2, ?)
and regexp_like(column3, ?)
and regexp_like(column4, ?)
クエリがすべての列の条件を指定する必要はないかもしれません。条件が指定されていない列については、ワイルドカードの正規表現* またはを使用することができます。単純にwhere句の条件を含めることはできません。
select * from table_name
where regexp_like(column1, 'h[i|ello]')
and regexp_like(column2, '.*')
and regexp_like(column3, '.*')
and regexp_like(column4, 'bye')
OR
select * from table_name
where regexp_like(column1, 'h[i|ello]')
and regexp_like(column4, 'bye')
はREGEXP_LIKE条件でワイルドカード文字を使用するには、単純にすべての条件を含めていないよりもパフォーマンスが低いだろうか?もしそうなら、それは重要なパフォーマンスの違いでしょうか?
根本的な懸念は、指定された条件に従ってSQL文を動的に作成する代わりに、単一のSQL文を使用できることです。