NOTIN和OR的SQL语句优化
NOT IN 的优化:
例如:
select ID,name from Table_A where ID not in (select ID from Table_B)
这句是最经典的not in查询了。改为表连接代码如下
将 NOT IN 改为表连接的⽅式进⾏优化
⽹上有篇帖⼦这样的
select
Table_A.ID,
Table_A.name
from Table_A
left join Table_B on Table_A.ID=Table_B.ID and Table_B.ID is null
sql语句优化方式但是。我试了不管⽤,条件没有过滤掉。
后来我把这个条件加在后边就可以了。(可能是我SQL语句写错了?,反正以后我还是好⼏个地⽅都⽤的这种⽅式)select
Table_A.ID,
Table_A.name
from Table_A
left join Table_B on Table_A.ID=Table_B.ID
where
Table_B.ID is null
其实我也感觉两种⽅式⼀样,但第⼀个我当时⽤的确实没过滤出来,(那已经是好⼏个表关联查询了)。
OR 的优化:
IN 和 OR 的优化⽐较相似
都采⽤关键字 UNION 的⽅式
将OR 的多个条件查分为多个查询后使⽤ UNION 连接为⼀个临时表就可以了。
顺带记录下 UNION ALL 和 UNION 的区别。
UNION ALL 将上下所有的数据拼到⼀块。
UNION 拼到⼀块后对数据进⾏过滤去重
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论