Table_X には 7000 行が含まれます Table_Y には 1 000 000 行が含まれます
この要求は SQL Server2005 では高速に実行されますが、SQL Server 2008 では 3 分かかります
SELECT [Extent1].[ID] AS [ID]
FROM [dbo].[TableX] AS [Extent1]
INNER JOIN [dbo].[TableY] AS [Extent2] ON [Extent1].[ID] = [Extent2].[Fk_Id]
WHERE (
(
[Extent2].[Fk_Id] IN (
(
SELECT [KEY]
FROM CONTAINSTABLE([TableX], (Description), N'"PMI_Log"') [CT]
)
)
)
OR (
[Extent2].[id] IN (
(
SELECT [KEY]
FROM CONTAINSTABLE([TableY], (Description), N'"PMI_Log"') [CT]
)
)
)
)
すでにインデックス、統計、およびカタログを再構築しています。
2 つのサブクエリ (select..FROM ContainsTable...) には 15 ミリ秒かかります
実行計画は、テーブル値関数 [FulltextMatch] で 100% の時間がかかると言っています。
多くのテストを行った結果、フルテキスト クエリの間に OR を挿入すると、パフォーマンスが低下することがありました。
誰かが助けることができますか?
どうも、
この質問は明らかに同じ問題です:クエリで複数の CONTAINSTABLE を使用すると、SQL Server 2008 全文検索 (FTS) が非常に遅くなる