2
SQL Server(2008 R2)全文搜索存在性能問題。當我們在全文搜索條件附加條件時,它會變得太慢。具有附加條件的SQL Server全文搜索性能
這裏是我的簡單查詢:
SELECT * FROM Calls C
WHERE (C.CallTime BETWEEN '2013-08-01 00:00:00' AND '2013-08-07 00:00:00')
AND CONTAINS(CustomerText, '("efendim")')
呼叫表的主鍵是呼叫ID(INT,聚集索引),並調用由CallTime索引表。我們有160000000行,每行的CustomerText大約爲10KB。
當我看到執行計劃時,首先找到全文搜索結果集,然後通過CallId與Calls表連接。因此,如果第一個結果集具有更多行,則查詢會變慢(超過一分鐘)。
這是執行計劃:
當我運行在條件seperately,它返回CallTime條件360.000行:
SELECT COUNT(*) FROM Calls C
WHERE (C.CallTime BETWEEN '2013-08-01 00:00:00' AND '2013-08-07 00:00:00')
和1.200.000行爲包含條件:
SELECT COUNT(*) FROM Calls C
WHERE CONTAINS(AgentText, '("efendim")')
那麼,我該怎麼做提高我的查詢的性能?
我首先不使用'BETWEEN',它的可怕性能和可讀性。我會改用'(C.CallTime> ='2013-08-01 00:00:00'和C.CallTime <'2013-08-07 00:00:00')' –
如果你的' d將表格定義以及您創建的所有索引一起發佈。 –