将自由文本搜索与另一个条件相结合很慢

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)

以下是查询计划:

在此输入图像描述

为什么第三个查询这么慢?我可以做任何事情来改进它,还是我需要拆分查询?

Mic*_*Sim 3

根据您的 MS SQL 2008 R2 服务包版本,您的问题可能与以下 Microsoft Connect 问题有关:“混合查询”的全文性能

根据 MS Connect 条目,安装 SQL Server 2008 R2 的最新累积更新包后,问题应该会消失。