1

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

1 回答 1

2

不,没有办法提高这个查询的性能LINQ

使用时甚至会有一点开销LINQ,但在这种情况下肯定可以忽略不计。

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

如果你想提高性能,你必须改进这个SQL-statement 本身。

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

这可能会给您带来比您预期更多的结果。


' ANDs 和OR.

您的WHERE-clause 现在类似于:

(condition1 AND condition2 AND condition3 AND condition5 AND condition6)
OR condition4

我想,你实际上的意思是:

condition1 AND condition2
AND (condition3 OR condition4)
AND condition5 AND condition6

不是说你的WHERE-clause 是错误的。我只怀疑您在某处需要一些额外的括号,以获取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)')
于 2013-01-30T06:26:12.910 回答