Product 表中有 700K 记录。查询:
SELECT TOP 1 ID,
Name
FROM Product
WHERE contains(Name, '"White Dress"')
ORDER BY DateMadeNew desc
运行大约需要 1 分钟。DateMadeNew 上有一个非聚集索引,Name 上有 FreeText 索引。
如果我删除 TOP 1 或 Order By - 运行时间不到 1 秒。
这是执行计划的链接。 http://screencast.com/t/ZDczMzg5N
看起来 FullTextMatch 执行次数超过 400K。为什么会这样?怎样才能做得更快?
2010 年 5 月 3 日更新
看起来基数在多词 FreeText 搜索中不正常:
优化器估计有 28K 记录匹配“White Dress”,而实际上只有 1 个。 http://screencast.com/t/NjM3ZjE4NjAt
如果我将“White Dress”替换为“White”,估计数字为“27,951”,而实际数字为“28,487”,这要好得多。
似乎优化器只使用短语中的第一个单词来搜索基数。