単一の単語を検索にしたい状況があります。
そのシナリオでは、パフォーマンスの観点からどのクエリが適切でしょうか?
Select Col1, Col2 from Table Where Col1 Like '%Search%'
または
Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search')
?
全文検索(CONTAINSを使用)は、LIKEをワイルドカードで使用するよりも高速/効率的です。全文検索(FTS)には、FTSが使用できる全文索引を定義する機能が含まれています。ダンノ機能を使用するつもりならFTSインデックスを定義しない理由...
左側にワイルドカードを使用したLIKE(IE:LIKE '%Search'
)インデックスを使用できません(列にインデックスが存在する場合)。テーブルスキャンを保証します。私はテストと比較をしていませんが、正規表現には同じ落とし穴があります。明確にするために、 LIKE '%Search'
およびLIKE '%Search%'
can notインデックスを使用します。 LIKE 'Search%'
はインデックスを使用できます。
通常のデータベースの場合、適切な全文検索インデックスが検索対象のフィールドに構築されていると仮定すると、CONTAINS検索ははるかに高速になります。 LIKE
演算子の評価では、通常インデックスを使用しないため、すべてのデータを読み取る必要があります。