2

私は他の場所でダウンロードしたテーブルを使用していますDATA_SOURCE。レコードのさまざまなデータ ソースをすべて連結する列を次のように配置しています。

sourceA; sourceB; sourceC; ...

したがって、 からのレコードを探している場合sourceBは、 で類似検索を行う必要があります%sourceB%

これは明らかに時間のかかるクエリです。私の質問は、列にインデックスを付けた場合DATA_SOURCE、これらのワイルドカードのような検索のパフォーマンスが向上しますか? または、違いはありません。

4

1 に答える 1

6

いいえ。インデックス類似検索で使用されますが、検索基準がワイルドカードで始まっていない場合に限ります。

LIKE 'Albert %'そのため、インデックス可能になりますが、そうではありLIKE '%Einstein%'ません。

もちろん、これの理由は、インデックスが行うことは、検索を線形から対数の複雑さに減らすために、その列でソートしたときに結果がどこにあるかの内部テーブルを構築することだけだからです。検索基準がワイルドカードで始まる場合でも、すべての可能な値をループして一致させる必要があり (いわゆるテーブル スキャン)、インデックスの潜在的なパフォーマンスの向上を排除します。

于 2013-05-27T16:48:38.927 に答える