gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:49:05 29 4
gpt4 key购买 nike

好的,我有一个疑问:

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 = 3,并且使用 OR 会重复 确实有意义,因为您可能有 b = 0 OR a = 3,并且如果您要连接两个单独的结果集,则最终可能会得到每个匹配记录的重复项两个标准。

因此,无论您使用的是 IN 还是 OR,都将始终执行重复过滤。但是,如果您从一开始就知道不会有任何重复项(这通常是使用 IN 时的情况),那么您可以通过使用 UNION ALL 获得一些性能code> 不会过滤掉重复项:

select distinct(a)
from mytable
where
b = 0

UNION ALL

select distinct(a)
from mytable
where
b = 3

关于sql server 'in' 或 'or' - 最快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3510395/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com