我第一次测试在 sql2008 上运行激活了全文搜索的给定数据库失败了,结果出现问题。sql2008 花费了 sql2000 的几倍时间,但是为什么呢?
答案1
SQL 2000 和 SQL 2008 中的全文引擎完全不同。
在 SQL 2000 中,当您向数据库提交全文查询时,它会搜索整个全文索引并将所有匹配的行返回给全文查询,然后使用您提供的作为表过滤器的常规过滤功能根据查询返回的行对这些行进行过滤。
在 SQL 2008 中,首先应用表过滤器,然后将这些 rowId 发送到全文搜索,并针对与表搜索匹配的行运行全文搜索。
您可能需要重写查询以提高不同版本的查询性能。
此外,在 SQL 2008 中,全文索引存储在 SQL 数据文件中,搜索由 SQL Server 引擎执行。在 SQL Server 2000 中,全文索引存储在数据库文件之外,索引搜索由索引服务器处理。
答案2
有关更多信息,您可以查看 Brent 对差异的体验以及受影响的 StackOverflow这里