比较SQL查询与Linq的性能

时间:2013-01-30 06:16:18

标签: sql performance linq

关于使用.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

1 个答案:

答案 0 :(得分:2)

不,无法使用LINQ来提高此查询的效果。

使用LINQ时会有轻微的开销,但在这种情况下肯定会被忽略。

LINQ最终还会生成SQL并在您的数据库上执行它。因此LINQ不会提供任何性能优势。

如果您想提高效果,则必须改进此SQL语句本身。

查看您的WHERE子句,没有括号可以将任何AND组合到该单OR。这是故意的吗?您的结果现在将满足所有AND - 条件OR ((Contains(BOOLEANTEXT, 'Near((FORM,WARRANT,RETURN,RESPECTING,ELECTION,EXPENSES), 1000, TRUE)' )))

这可能会比你预期的结果更多。


ANDOR上的其他内容。

您的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)')