我正在运行两个查询,它们应该在我们的 CV 数据库表上做同样的事情:
CONTAINS
(全文索引表 - 简历、全名等都包含在索引中)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
- 但我想不出在“成本”这个词之前有任何意义的字符。
索引是否可能有问题,并且没有获取所有结果?它设置为跟踪自动更改,因此它应该正确索引。