NOT IN、NOT EXISTS的相关子查询改用LEFT JOIN--sql2000性能优化
性能 优化 -- 查询 in not 相关 Join
2023-09-11 14:19:23 时间
数据库:系统数据库
子查询的用法
子查询是一个 SELECT 查询,它嵌套在 SELECT、INSERT、UPDATE、DELETE 语句或其它子查询中。任何允许使用表达式的地方都可以使用子查询。子查询可以使我们的编程灵活多样,可以用来实现一些特殊的功能。但是在性能上,往往一个不合适的子查询用法会形成一个性能瓶颈。
如果子查询的条件中使用了其外层的表的字段,这种子查询就叫作相关子查询。相关子查询可以用IN、NOT IN、EXISTS、NOT EXISTS引入。 关于相关子查询,应该注意:
(1)NOT IN的相关子查询可以改用LEFT JOIN代替写法。比如:
SELECT PUB_NAME FROM PUBLISHERS WHERE PUB_ID NOT IN (SELECT PUB_ID FROM TITLES WHERE TYPE = 'BUSINESS')
我们用左外连接语句对上面的语句进行替换,先看下面的语句,PUBLISHERS 表与TITLES表进行左外连接
SELECT A.PUB_NAME,B.pub_id FROM PUBLISHERS A LEFT JOIN TITLES B ON B.TYPE = 'BUSINESS' AND A.PUB_ID=B. PUB_ID
根据要求,我们只要查询出上面pub_id为空的就行,对语句进行如下改进:
(2)NOT EXISTS的相关子查询可以改用LEFT JOIN代替写法。比如:
相关文章
- EntityFramework之原始查询及性能优化(六)
- Unity性能优化 — 动画模块
- 特效优化2:效果与性能的博弈
- 网格优化中,你遇到过哪些吃性能的设置?
- 衡量度量过程性能的几个指标
- 第一届淘宝并发编程比赛-多线程排序性能优化
- Spark性能优化--如何解决数据倾斜
- Tomcat性能优化(三) Executor配置
- 《Oracle性能优化与诊断案例精选》导读
- 《Hadoop MapReduce性能优化》一2.4 用Apache Ambari监测Hadoop
- 《DB2性能管理与实战》——2.1 内存概览
- 揭秘 Vue.js 九个性能优化技巧
- Oracle SQL 性能优化技巧
- jboss性能优化
- Java程序性能优化
- 前端性能优化之管理后台列表功能操作
- 淘宝内部分享:MySQL & MariaDB性能优化 【转】
- JavaScript性能优化小知识总结
- Web 性能优化:Preload与Prefetch的使用及在 Chrome 中的优先级
- 性能优化8--内存泄露
- 性能优化2--内存优化
- android 性能优化 -- 启动过程 冷启动 热启动
- [魅族Degao]Androidclient性能优化
- 一份平民化的应用性能优化检查列表(完整篇)--转
- HBase 数据库检索性能优化策略--转
- 性能测试基础