Sql-Server-2008-R2
使用多個全文搜尋時全文緩慢
預先感謝您的幫助。我一直在發瘋。
我們最近通過在以下查詢中添加額外的包含來更改我們的程式碼。這對性能產生了真正的負面影響。當我們刪除包含或其他內容時,查詢會立即返回。
select * from dbo.company p with (nolock) join dbo.alt_company o with (nolock) on p.org_id = o.org_id where CONTAINS (p.description, '"phrase1*" OR "phrase2"') or CONTAINS (o.description, '"phrase1*" OR "phrase2"')
為什麼第二個包含會對性能造成如此嚴重的破壞。關鍵字的數量使問題變得更糟。我已經以只有一個包含的方式重新編寫了查詢,並且效果很好。我只是想確保我了解正在發生的事情。
謝謝,皮特
OR
降低性能的一種常見解決方法是將各個部分分開,然後UNION ALL
將它們重新組合在一起:select * from dbo.company p with (nolock) join dbo.alt_company o with (nolock) on p.org_id = o.org_id where CONTAINS (p.description, '"phrase1*" OR "phrase2"') UNION ALL -- note the "ALL", this will prevent a "DISTINCT" select * from dbo.company p with (nolock) join dbo.alt_company o with (nolock) on p.org_id = o.org_id where CONTAINS (o.description, '"phrase1*" OR "phrase2"')
您可以通過
dbo.company
在每個部分中僅引用一次來進一步優化;我將根據您的需求和業務規則將其留給您決定。哦,停止使用
select *
andWITH (NOLOCK)
。