【发布时间】:2013-02-03 10:29:46
【问题描述】:
我正在运行两个查询,它们应该在我们的 CV 数据库表上做同样的事情:
-
CONTAINS(全文索引表-cv、fullname等都包含在索引中)SELECT COUNT(1) FROM [CVDatabase] WHERE CONTAINS ((CVText, fullname, city, CompanyName, jobTitle, targetJobTitle),'"cost accountant*"') AND (Country='South Africa')结果数:300
-
CHARINDEX(未编入索引)SELECT COUNT(1) FROM [CVDatabase] WHERE (CHARINDEX ('cost accountant', cvtext) > 0 OR CHARINDEX ('cost accountant', fullname) > 0 OR CHARINDEX ('cost accountant', city) > 0 OR CHARINDEX ('cost accountant', companyname) > 0 OR CHARINDEX ('cost accountant', jobtitle) > 0 OR CHARINDEX ('cost accountant', targetjobtitle) > 0) AND (Country = 'South Africa')结果数:339
这是超过 10% 的差异。自然CHARINDEX 与捕获“成本会计师”、“成本会计师”(CONTAINS 也将使用通配符捕获)。差异可能来自“成本会计”之前的字符,CHARINDEX 将捕获但不是CONTAINS - 但我想不出任何在“成本”一词之前有意义的字符。
索引是否可能有问题,并且它没有获取所有结果?它被设置为跟踪自动更改,因此它应该正确索引。
【问题讨论】:
-
这是 SQL Server 吗?请适当标记。