Ras*_*ber 9 sql-server full-text-search
我在SQL Server 2008R2上的一个简单表上有一个自由文本目录:
CREATE FULLTEXT CATALOG customer_catalog;
CREATE FULLTEXT INDEX ON customer
(
name1
)
KEY INDEX customer_pk
ON customer_catalog;
ALTER FULLTEXT INDEX ON customer START UPDATE POPULATION;
Run Code Online (Sandbox Code Playgroud)
如果我执行以下三个查询,前两个几乎立即返回,而最后一个在具有100,000条记录的表上需要大约14秒:
SELECT
customer_id
FROM
customer
WHERE
CONTAINS(customer.*, 'nomatch');
SELECT
customer_id
FROM
customer
WHERE
customer.customer_id = 0;
SELECT
customer_id
FROM
customer
WHERE
CONTAINS(customer.*, 'nomatch')
OR customer.customer_id = 0;
Run Code Online (Sandbox Code Playgroud)
以下是查询计划:

为什么第三个查询这么慢?我可以做任何事情来改进它,还是我需要拆分查询?
根据您的 MS SQL 2008 R2 服务包版本,您的问题可能与以下 Microsoft Connect 问题有关:“混合查询”的全文性能
根据 MS Connect 条目,安装 SQL Server 2008 R2 的最新累积更新包后,问题应该会消失。