1

こんにちは、CONTAINSTABLE を使用してテーブルの列を検索しています。問題はパフォーマンスです。これは私のクエリです:

SELECT count(*) 
FROM dbo.Document d
INNER JOIN dbo.DocuemntVehicleXRef vx ON (vx.DocuemntID = d.DocumentID)
INNER JOIN CONTAINSTABLE (Document , QueryContent , @searchterm ) ftt ON ( d.DocumentID = ftt.[Key] )  
WHERE vx.VehicleId = @vehicleId

したがって、パフォーマンスを向上させるために (ドキュメント テーブルが巨大であるため)。dbo.Docuemnt テーブル全体ではなく、VehicleId にバインドされたドキュメントに対してのみ CONTAINSTABLE 関数を実行する必要があります (残りの検索は不必要であるため) 回避策またはこれを行う方法はありますか? ありがとう

4

1 に答える 1

2

1つのアプローチは、それぞれがドキュメントのサブセットを返す複数のインデックス付きビューを作成することです。各ビューは独自のftインデックスを取得し、関連するビューからのみ選択するようにクエリロジックを管理します。このアプローチは、テーブルを階層カテゴリ構造などの一般的に使用されるチャンクに簡単に分割できる場合に適しています。

別のアプローチは、一意のキーを追加することにより、インデックス付きテキストを「マック」することです。たとえば、「VEHICLEID001」とすると、他のキーワードに加えて「VEHICLEID001」を検索できます。このアプローチは、マイクロソフトによって反慣行として嫌われていますが、機能します。

于 2012-12-05T05:16:02.060 に答える