千家信息网

MySQL中NOT EXISTS优化案例教程

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,本篇内容介绍了"MySQL中NOT EXISTS优化案例教程"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有
千家信息网最后更新 2024年10月21日MySQL中NOT EXISTS优化案例教程

本篇内容介绍了"MySQL中NOT EXISTS优化案例教程"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、原始语句:

SELECT * FROM dcf_account.t_posting_transaction t1 WHERE NOT EXISTS ( SELECT * FROM dcf_loan.t_account_posting_detail t2 WHERE t1.track_no = t2.posting_num     );

二、关于优化改语句的几点思考:
对于原始语句,因为是NOT EXISTS判断,所以子查询中没有必要SELECT 只需SELECT ID甚至是SELECT 1都可以。另外,鉴于MySQL子查询算法性能较差,考虑改写成对应的JOIN方式,因为这里是NOT EXIST判断,所以改写时有一定技巧,即可使用左连接,然后过滤出未能成功连接的记录。还有,原始语句最外层的查询也是SELECT 至于这个是否有必要应当依据具体业务,尽量在满足业务要求的条件下取尽可能少的字段。最后,即时做了上述优化,若在连接条件上没有合适的索引SQL性能仍然会非常差(特别是在表的数据量巨大的时候),所以考虑在连接的条件列t1.track_no 和 t2.posting_num上分别创建索引。

三、最终的优化结果如下
语句由原来的进一个小时的运行时间减少到1秒内。

SELECT t1.id FROM dcf_account.t_posting_transaction t1 LEFT JOIN dcf_loan.t_account_posting_detail t2 ON t1.track_no = t2.posting_num WHERE t2.id IS NULL;

"MySQL中NOT EXISTS优化案例教程"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

语句 案例 原始 条件 查询 教程 必要 业务 内容 性能 更多 知识 索引 合适 实用 巨大 较差 成功 学有所成 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 约基奇数据库 关于网络安全知识竞赛的新闻稿件 数学建模在软件开发上的应用 关系数据库中的二维表至少 ac-100数据库 天津电力应急软件开发厂家现货 web应用服务器软件 网络安全和信息化局怎么样 汇丰网上银行服务器异常 网络安全专业应届生招聘 哈尔滨打卡软件开发 贵州哪里有网络技术职业学校 数据库深入学习 成都市网络安全信息中心 小七手游链接服务器失败 沈阳新华互联网科技学校图片 安卓开发 怎么对已有数据库 网络安全三定表 销售软件开发服务账务处理 睿图安卓软件开发工作室 数据库技术的基础 恩施管理软件开发公司 信息网络安全专业的前景 明日都市最安全的服务器 简述防范网络安全应该注意什么 成都好伙伴网络技术有限公司 电视域名服务器dns是什么意思 企业对外直接投资数据库 一个网站对应多个服务器 数据库 赋值
0