6

全文検索は初めてです。次のクエリを使用しました

Select * From Students Where FullName LIKE '%abc%'

学生テーブルには百万のレコードがすべてランダムに含まれており、この「QZAQHIEK VABCNLRM KFFZJYUU」のように見えます

わずか 2 秒で 1100 行になりました。 2 秒で 100 万件のレコードが検索されるとしたら、わざわざ全文検索を使用する必要があるでしょうか?!! Like 述語は全文索引も使用しましたか?

4

4 に答える 4

4

いいえ。LIKE は全文索引付けを利用しません。こちらをご覧ください。

最近のコンピューターは非常に高速ですが、検索結果が予想よりも速く表示される場合は、以前に同じクエリを実行したためにキャッシュされた結果セットが返された可能性があります。キャッシュされた結果を取得していないことを確認するには、DBCC DROPCLEANBUFFERS を使用できます。SQL Server のキャッシュ クリア オプションについては、この投稿をご覧ください。

リンク先のページからの抜粋:

LIKE と全文検索の比較

フルテキスト検索とは対照的に、LIKE Transact-SQL 述語は文字パターンに対してのみ機能します。また、LIKE 述語を使用して、フォーマットされたバイナリ データをクエリすることはできません。さらに、大量の非構造化テキスト データに対する LIKE クエリは、同じデータに対する同等のフルテキスト クエリよりもはるかに遅くなります。数百万行のテキスト データに対する LIKE クエリは、返されるまでに数分かかる場合があります。一方、フルテキスト クエリは、返される行数にもよりますが、同じデータに対して数秒以下しかかかりません。

于 2012-05-08T16:55:33.687 に答える
1

少なくともあなた自身の満足のために、あなたはあなた自身の質問に答えたと思います. プロトタイピングが許容できる時間内に結果を生成し、(Paul Sasik によると) キャッシングが迅速な応答を説明しないことが確実である場合は、全文索引付けのオーバーヘッドを必ずスキップして、LIKE を続行してください。

于 2012-05-08T17:05:04.017 に答える
0

いいえ、実際には、クエリの例では、潜在的な一致の最初の文字がわからないため、通常のインデックスを利用して処理を高速化することさえできません。

一般に、全文検索は通常の検索より高速です。しかし、LIKE はかなり遅いです。

于 2012-05-08T17:02:03.357 に答える