我正在运行两个应该在我们的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
的'成本会计'之前的字符 - 但我无法想到在'成本'这个词之前有意义的任何字符。
索引是否可能出现问题,而且没有取得所有结果?它被设置为跟踪自动更改,因此它应该正确索引。