シナリオ:
T-SQL ストアド プロシージャ (Sql Server Management Studio) を使用して、MS インデックス サービスとこの (簡略化された) クエリを使用して、テキスト ドキュメントの検索一致を返します。
SELECT *
FROM openquery(
filesystem2,
'SELECT
Path, Rank, Filename
FROM
SCOPE('' "e:\test\documents" '')
WHERE
CONTAINS('' FORMSOF (INFLECTIONAL, "test" ) '')
') b
このクエリは数日前に正常に機能しなくなりました。完全に実証されたわけではありませんが、プロパティ キャッシュとマスター インデックスの間の相互作用が適切に機能していないようです。
1) SCOPE パラメータを削除します (つまり、FROM 句として "FROM SCOPE()" を使用するだけです)。
2) WHERE 句を削除 (および SCOPE 関数をそのまま維持)
したがって、コンテンツまたはロケールだけで目的のドキュメントを「見つける」ことはできますが、両方を一緒に使用することはできません。
1 つのオプションは、カタログを再インデックス化することですが、現時点では、再インデックス化は最後の手段にすぎません。
そうは言っても、クエリを書き直して、指定された SCOPE を除外し、追加の WHERE 句を含めました。
SELECT *
FROM openquery(
filesystem2,
'SELECT
Path, Rank, Filename
FROM
SCOPE()
WHERE
CONTAINS('' FORMSOF (INFLECTIONAL, "test" ) '') and
Path like ''%e:\test\documents%''
') b
このクエリは、検索時に適切なドキュメントを返します。ただし、LIKE キーワードを使用するとパフォーマンスが低下する可能性があることを懸念していました/懸念しています。そのため、各クエリの実行計画を調査しましたが、それらはまったく同じでした...これは、次の2つのうちの1つを示しています。
1) インデックス サービスのクエリ コンポーネントは、両方のクエリが等しくなるように最適化します。
2) DB テーブルが参照されていない場合、クエリ アナライザーはリモート クエリに対して正確なフィードバックを提供しません。
質問(順不同)。誰かが次のことについて何か洞察を持っていますか?:
1) 上記のシナリオで説明した、プロパティ キャッシュとマスター インデックスの間の元の問題の動作の原因は何ですか?
2) 実行計画について
a) Would the Querying Component process/optimize both queries the same?
b) Can Sql Server Management Studio provide execution plan feedback for openquery queries that do not reference any DB tables?
3) 最後に、どのクエリがより効率的/高速で、その理由は?
a) i.e. should I use the second one because it solves my problem?
ありがとうございました!