ようこそ。睡眠不足なプログラマのチラ裏です。

いまさら聞けないSQL Server 2005のインデックス その4「フルテキストインデックス」

フルテキストインデックス

数百万行のテキストデータに対してLIKE演算子を含むクエリを実行すると、結果が得られるまで
かなりの時間とコストを要してしまうことがあるが、フルテキスト検索を使用すると、非常に高速に検索を行うことができる。


char、varchar、nvarchar型のデータを格納する列に対してフルテキストインデックスを作成することができる。
また、Microsoft Wordドキュメントファイルなどのバイナリデータを格納する varbinary(max)列または、
image列に対してもフルテキストインデックスを作成することができる。
バイナリデータの検索に対しては、LIKE述語は使用することができないため、
フルテキストインデックスを検討するとよいだろう。
フルテキストインデックスをテーブルに作成するには、テーブルに一意でNULLが許容されない列が1つ必要となる。
また、フルテキストインデックスを格納するための、フルテキストカタログを作成する必要がある。
テーブルにフルテキストインデックス作成機能をセットアップするには次の手順で行う。

1.管理者権限をもつユーザでサーバに接続
2.データベースのプロパティを表示し、[ファイル]を選択。[フルテキストインデックスを使用する]チェックボックスをON。
(ここまでで、フルテキストインデックスの使用が有効化される。)
3.データベースにフルテキストインデックスカタログを作成する

USE [データベース名]
CREATE FULLTEXT CATALOG TESTCatalog ON FILEGROUP SECONDARY

4.フルテキストインデックス作成する。

CREATE FULLTEXT INDEX
ON [TEST].CUSTOMER (ADDRESS)
KEY INDEX PK_CUSTOMER_ID
ON TESTCatalog

フルテキストインデックスが作成されている列に対して検索を行う場合、
LIKE演算子を使用する代わりに、以下のようにCONTAINSを使用した文字列検索を行うことができる。

SELECT *
FROM [TEST].CUSTOMER
WHERE CONTAINS (ADDRESS, '札幌市中央区')