我在 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;
如果我执行以下三个查询,前两个查询几乎立即返回,而最后一个查询在一个有 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;
以下是查询计划:
为什么第三个查询这么慢?我可以做些什么来改进它还是需要拆分查询?