6つのフィールドしかない非常に大きなテーブルがあります。行数は約2000万行です。1つの整数フィールドを含むクラスター化インデックスがあります。ただし、頻繁に検索する必要があるnvarchar(max)フィールド(必ずしも一意ではありませんが、nullになることはありません)があり、SQLにはインデックスのサイズに上限があるため、インデックスを作成できないという問題があります。これを解決するための私のオプションは何ですか?私はSQLにあまり詳しくないので、専門用語は避けてください。
2 に答える
全文検索を使用する必要があるようです:
SQL Serverの全文検索を使用すると、ユーザーとアプリケーションはSQLServerテーブルの文字ベースのデータに対して全文クエリを実行できます。
..。
これらの列は、 次のデータ型のいずれかを持つことが
char
できます:、、、、、、、、、、、またはvarchar
nchar
nvarchar
text
ntext
image
xml
varbinary(max)
大きなテキスト列のインデックスを追加できるようにするためにフルテキストインデックスが必要になるだけでなく、特定の単語や大きなドキュメントの途中にあるフレーズの場合、検索で先頭のワイルドカード(つまりWHERE TextField LIKE '%Specific word or phrase%'
)を使用するとフルテキスト以外のインデックスを使用できなくなるため、通常のインデックスは役に立ちません。
インデックスのない検索は効率的ではありません。
全文検索はchar, varchar, nvarcahr
列で実行できます。ただし、フルテキストインデックスを作成すると、常にうまく機能します。
一部の列でインデックスなしで機能する理由は、全文検索の拡張機能(セマンティクス、単語の距離、ストップワードなど)を許可するためです。