2009-03-12 3 views
0

テキスト列にフルテキストインデックスがある場合はそれが使用され、そうでない場合はO(N²)の方法がLIKE '%word%'に低下するsqlserverクエリを作成する必要がありますか?インデックスが存在する場合にフルテキスト検索を使用するSQLクエリを作成する方法はありますか。

私は答えは同じようなものになると信じて:クエリはプログラムによって生成されます

IF has_full_text_index('mycolumn') 
    select mytable_id from mytable where contains(mycolumn, 'word') 
ELSE 
    select mytable_id from mytable where mycolumn like '%word%' 
ENDIF 

。クエリには、必ず一致する単語が1つだけあります。列にフルテキストインデックスがあるかどうかを調べるテストは、すばやく行う必要があります。

+0

あなたの質問は私には意味がないと思います。それはあなたのテーブルです - 事前に列にフルテキストインデックスがあるかどうかは分かりませんか? –

+0

いいえ、しかし、私はこのコードが必要な複雑な環境に入ることを望んでいませんでした。 説明する最も簡単なケースは、インデックスサービスを有効にせずにデータベースを使用するユーザーがいて、ソフトウェアが引き続き動作する必要があるということです。 – neves

答えて

1

私はあなたがフルテキストカタログに属して、テーブルのかを知ることになるケンに同意する傾向があるが、あなたは、カタログ内のテーブルに対して

sp_help_fulltext_tables {catalogname} 

を照会することができます。 (MSDN経由)

+0

フルテキスト検索がデータベースに対して有効でない場合、sp_help_fulltext_tablesが失敗する – neves

+0

SELECT fulltextserviceproperty( 'IsFulltextInstalled') は、FullTextが実行されているかどうかによって1または0を返します。 –

関連する問題