当前位置: 首页 > 面试题库 >

sql server'in'或'or'-最快

司空实
2023-03-14
问题内容

好的,所以我有一个查询:

select distinct(a)
from mytable
where
b in (0,3)

以上将会更快,或者

select distinct(a)
from mytable
where
b = 0
or
b = 3

有一般规则吗?

谢谢


问题答案:

双方INOR会做一个查询b = 0,接着一个b = 3,然后做一个合并连接的两个结果集,最后筛选出任何重复。

使用IN,重复项并没有真正的意义,因为b不能同时使用03,但是事实是IN将重复转换为b = 0 OR b = 3OR,重复项_是_ 有意义的,因为您可以使用b = 0 OR a = 3,并且如果您要将两个分开结果集,对于与两个条件均匹配的每条记录,最终可能会出现重复项。

因此,无论您使用IN还是,都将始终执行重复过滤OR。但是,如果您从一开始就知道没有重复项(通常是在使用时的情况),IN则可以使用UNIONALL不过滤重复项的方法来获得一些性能:

select distinct(a)
from mytable
where
b = 0

UNION ALL

select distinct(a)
from mytable
where
b = 3


 类似资料:
  • 问题内容: python中最好的方法是什么:if语句中的 OR 或 IN ?考虑性能和最佳实践。 要么 谢谢。 问题答案: 最好的方法是使用 set : 因为集合中的成员资格测试为O(1)(不变成本)。 其他两种方法的复杂度相同。只是固定成本的差异。测试既有清单又有链条短路;找到匹配项后立即终止。一种使用字节码跳转序列(如果为,则跳转到末尾),另一种使用C循环,如果值匹配则使用早期退出。在最坏的情

  • 问题内容: 这个问题已经在这里有了答案 : SQL逻辑运算符优先级:和和或 (4个答案) 7年前关闭。 我有以下查询: 如果不弄清楚括号,这是令人困惑的。会永远评估为真吗?还是将其评估为? 我找不到有关此事的任何文档。我是两个选项中的后者,但我不确定。 注意:我正在使用Oracle Pl / SQL。 问题答案: AND的优先级高于OR: 来自Oracle 12.1文档 (AND和OR的优先级至少

  • 本文向大家介绍求结果(and or or)相关面试题,主要包含被问及求结果(and or or)时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 在MySQL中创建非NULL约束以使fieldA和fieldB不能都为NULL的最佳方法是什么。我不在乎任何一个本身是否为NULL,只要另一个字段具有非NULL值即可。而且,如果它们都具有非NULL值,那就更好了。 问题答案: MySQL 5.5引入了SIGNAL,因此我们不再需要Bill Karwin的答案中的额外列。Bill指出您还需要一个更新触发器,因此我也将其包括在内。

  • or-tools 是 Google 的优化搜索工具。 Google 优化工具包括: 约束编程解决方案 为线性规划和混合整数规划解决方案提供简单统一的接口,包括 CBC, CLP, GLOP, GLPK, Gurobi, SCIP, 和 Sulum。 背包算法 图算法 (最短路径,线性和分配,最小费用流,最大流) 主要特性 开源免费 持续维护,改进和开发 Alive 详细的文档,提供 C++, Py

  • O/R Broker也是一个O/R映射工具,它允许使用构造函数,setter方法,JavaBean属性,直接域访问.开发者可以灵活地控制SQL,并允许执行细粒度的操作.