Can*_*kut 5 performance sql-server full-text-search
SQL Server (2008 R2) 全文搜索存在性能问题。当我们对全文搜索条件有额外的 where 条件时,它会变得太慢。
这是我的简化查询:
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")')
Run Code Online (Sandbox Code Playgroud)
Calls 表的主键是 CallId(int,聚集索引),也是 Calls 表由 CallTime 索引的。我们有 16.000.000 行,每行 CustomerText 大约为 10KB。
当我看到执行计划时,它首先找到全文搜索结果集,然后通过 CallId 与 Calls 表连接。因此,如果第一个结果集有更多行,查询会变慢(超过一分钟)。
这是执行计划:
当我单独运行 where 条件时,它为 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')
Run Code Online (Sandbox Code Playgroud)
和 1.200.000 行包含条件:
SELECT COUNT(*) FROM Calls C
WHERE CONTAINS(AgentText, '("efendim")')
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能提高查询的性能?