2010-07-20 62 views
1

我的查詢需要對3列進行LIKE搜索。如何提高SQL Server查詢性能當對多列進行LIKE時

SELECT * FROM Monkeys 
WHERE [Name] LIKE '%pete%' OR [Desc] LIKE '%pete%' OR [Info] LIKE '%pete%'; 

我期望改善此查詢的性能。

我不能使用全文目錄,只是簡單的表格。大約有200,000行(SQL Server 2008數據庫),需要3到6秒。

Doe任何人有任何提示嗎?

+2

由於無法使用索引,因此在使用通配符作爲第一個字符時無法獲得良好的性能。這表明一個糟糕的設計,你不應該需要做這種類型的搜索,數據也不應該在三列之一。 – HLGEM 2010-07-20 16:32:07

+0

如果您使用搜索詞「LIKE%pete%」,那麼您將拋棄所有使用索引的機會。你真的無法加快這樣一個查詢 - 放棄%pete%搜索詞並使用其他搜索詞(或使用全文搜索) – 2010-07-20 16:32:48

回答

4

全文索引/搜索,如果你有領先的通配符。

沒有任何數量的正常索引將幫助您快速,對不起,無論是使用通配符的多列還是單列。

您的 最好 最壞的可能是在3列上有複合索引,並希望優化器掃描這個表格掃描,但坦率地說,我沒有嘗試過自己。並且可能因爲索引鍵列的組合寬度必須小於900字節而不可能