sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句

一夜未成名—

一夜未成名—

2016-02-19 11:08

下面是个超简单的sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接。在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率。在子查询中,NOT IN子句将执行一个内部的排序和合并。无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历)。为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS。



我要查询 Sendorder表中的冗余数据(没有和reg_person或worksite相连的数据)

sql="select Sendorder.id,Sendorder.reads,Sendorder.addtime from Sendorder where Sendorder.person_id not in(select user_id from reg_person ) or Sendorder.worksite_id not in(select id from worksite) order by Sendorder.addtime desc"
程序执行时间:40109.38毫秒

sql="select Sendorder.id,Sendorder.reads,Sendorder.addtime from Sendorder where not EXISTS (SELECT id FROM reg_person where reg_person.user_id=Sendorder.person_id) or not EXISTS (SELECT id FROM worksite where worksite.id=Sendorder.worksite_id) order by Sendorder.addtime desc"
程序执行时间:8531.25毫秒

很明显使用not EXISTS效率高多了 
展开更多 50%)
分享

猜你喜欢

sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句

编程语言 网络编程
sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句

SQL语句的自动优化

SQLServer
SQL语句的自动优化

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL 语句优化方法30例

编程语言 网络编程
SQL 语句优化方法30例

动态SQL语句

SQLServer
动态SQL语句

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQL语句示例

编程语言 网络编程
SQL语句示例

SQl 语句(常见)

编程语言 网络编程
SQl 语句(常见)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Word删除空行图文教程

Word删除空行图文教程

word提示“Word 无法启动转换器 mswrd632.wpc”

word提示“Word 无法启动转换器 mswrd632.wpc”
下拉加载更多内容 ↓