"and not" vs "or" t sql全文搜索

Posted

技术标签:

【中文标题】"and not" vs "or" t sql全文搜索【英文标题】:"and not " vs "or" t sql full text search 【发布时间】:2015-07-09 02:59:22 【问题描述】:

我遇到了查询性能问题。我的 where 子句包含,

where .....(type = c) and not (( type = a ) or contains ( ftstype, N'b' ))

如果没有“and not”部分,查询似乎更快。

我想检查“and”是否比“or”更便宜,以便我可以使用以下(根据 demorgans 规则,[c and (a or b)' = c and (a' and b ')])

where .....(type = c) and ( not ( type = a ) and not contains ( ftstype, N'b' ))

我还想检查查询优化器是否考虑了这种转换,以及确定更好的执行计划。 (我不了解 SQL 服务器估算计划。)

【问题讨论】:

你应该为你的请求的每个版本提供 sql server 估计计划。 【参考方案1】:

如果我没记错的话(我自己有点初学者),“或”选项的成本会更低。使用“或”选项,如果类型不是“a”,甚至在到达代码的“不包含(ftstype N'b'))”部分之前,您将短路处理完整的查询。

这样的事情怎么办……

WHERE ..... (type = c) AND (( type != 'a' ) OR ( ftstype != N'b'))

让我知道你的发现,因为我还在学习。

【讨论】:

以上是关于"and not" vs "or" t sql全文搜索的主要内容,如果未能解决你的问题,请参考以下文章

Content-Type header is "text/html", not "application/json"

The specified value "2019-1-2" does not conform to the required format, "yyyy-MM-dd&q

vs-code 配置

org.json.JSONException: JSONObject["shophours"] not found.

log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a &q

断言失败: (SourceMgr && "SourceManager not set!") with oclint-json-compilation-databas