关于使用.NOT搜索查询的问题。我很困惑哪个加载和处理SQL查询更快,我已经实现了SQL Server查询,即使我在SQL Server 2012中使用索引搜索,我的查询也变得越来越慢,而且获取数据的速度越来越慢。
那么有没有什么方法可以使用linq更快地查询?
以下是我的查询的简单
SELECT
counting
FROM
xxxxxxx
WHERE
(Contains(BOOLEANTEXT, '"FORM"'))
AND ((Contains(BOOLEANTEXT, ' "FORM" and "WARRANT" ' )))
AND ((Contains(BOOLEANTEXT, ' "RETURN" or "RESPECTING" or "ELECTION" or "EXPENSES" ')))
OR ((Contains(BOOLEANTEXT, 'Near((FORM,WARRANT,RETURN,RESPECTING,ELECTION,EXPENSES), 1000, TRUE)' )))
AND ((Contains(BOOLEANTEXT, 'FORMSOF(INFLECTIONAL, FORM,WARRANT,RETURN,RESPECTING,ELECTION,EXPENSES)' )))
AND ((Contains(BOOLEANTEXT, 'FORMSOF(THESAURUS, FORM,WARRANT,RETURN,RESPECTING,ELECTION,EXPENSES)' )))
ORDER BY
FORMTITLE ASC
答案 0 :(得分:2)
不,无法使用LINQ
来提高此查询的效果。
使用LINQ
时会有轻微的开销,但在这种情况下肯定会被忽略。
LINQ
最终还会生成SQL
并在您的数据库上执行它。因此LINQ
不会提供任何性能优势。
如果您想提高效果,则必须改进此SQL
语句本身。
查看您的WHERE子句,没有括号可以将任何AND
组合到该单OR
。这是故意的吗?您的结果现在将满足所有AND
- 条件OR ((Contains(BOOLEANTEXT, 'Near((FORM,WARRANT,RETURN,RESPECTING,ELECTION,EXPENSES), 1000, TRUE)' )))
这可能会比你预期的结果更多。
AND
和OR
上的其他内容。
您的WHERE
- 条款现在类似于:
(condition1 AND condition2 AND condition3 AND condition5 AND condition6)
OR condition4
我想,你的意思是:
condition1 AND condition2
AND (condition3 OR condition4)
AND condition5 AND condition6
我不说你的WHERE
- 条款错了。我只是怀疑你需要一些额外的括号,以获得你想到的WHERE
- 条款。
但在添加括号之前,让我们删除一些以提高可读性。这将与你的相同:
WHERE
Contains(BOOLEANTEXT, '"FORM"')
AND Contains(BOOLEANTEXT, ' "FORM" and "WARRANT" ')
AND Contains(BOOLEANTEXT, ' "RETURN" or "RESPECTING" or "ELECTION" or "EXPENSES" ')
OR Contains(BOOLEANTEXT, 'Near((FORM,WARRANT,RETURN,RESPECTING,ELECTION,EXPENSES), 1000, TRUE)')
AND Contains(BOOLEANTEXT, 'FORMSOF(INFLECTIONAL, FORM,WARRANT,RETURN,RESPECTING,ELECTION,EXPENSES)')
AND Contains(BOOLEANTEXT, 'FORMSOF(THESAURUS, FORM,WARRANT,RETURN,RESPECTING,ELECTION,EXPENSES)')