mysql 优化中如何进行IN换INNER JOIN
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,本篇文章给大家分享的是有关mysql 优化中如何进行IN换INNER JOIN,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。今天撸代码时
千家信息网最后更新 2025年11月10日mysql 优化中如何进行IN换INNER JOIN
本篇文章给大家分享的是有关mysql 优化中如何进行IN换INNER JOIN,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
今天撸代码时,遇到SQL问题:
要将A表查询的ID,匹配B表的ID,并将B表全部内容查询出来:
未优化前:
MySQL [xxuer]> SELECT -> COUNT(*) -> FROM -> t_cmdb_app_version -> WHERE -> id IN (SELECT -> pid -> FROM -> t_cmdb_app_relation UNION SELECT -> rp_id -> FROM -> t_cmdb_app_relation);+----------+| COUNT(*) |+----------+| 266 |+----------+1 row in set (0.21 sec)
优化后:
MySQL [xxuer]> SELECT -> count(*) -> FROM -> t_cmdb_app_version a -> INNER JOIN -> (SELECT -> pid -> FROM -> t_cmdb_app_relation UNION SELECT -> rp_id -> FROM -> t_cmdb_app_relation) b ON a.id = b.pid;+----------+| count(*) |+----------+| 266 |+----------+1 row in set (0.00 sec)
查看执行计划对比:
MySQL [xxuer]> explain SELECT -> COUNT(*) -> FROM -> t_cmdb_app_version -> WHERE -> id IN (SELECT -> pid -> FROM -> t_cmdb_app_relation UNION SELECT -> rp_id -> FROM -> t_cmdb_app_relation);+----+--------------------+---------------------+-------+---------------+---------+---------+------+------+--------------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+--------------------+---------------------+-------+---------------+---------+---------+------+------+--------------------------+| 1 | PRIMARY | t_cmdb_app_version | index | NULL | PRIMARY | 4 | NULL | 659 | Using where; Using index || 2 | DEPENDENT SUBQUERY | t_cmdb_app_relation | ALL | NULL | NULL | NULL | NULL | 383 | Using where || 3 | DEPENDENT UNION | t_cmdb_app_relation | ALL | NULL | NULL | NULL | NULL | 383 | Using where || NULL | UNION RESULT || ALL | NULL | NULL | NULL | NULL | NULL | Using temporary |+----+--------------------+---------------------+-------+---------------+---------+---------+------+------+--------------------------+4 rows in set (0.00 sec)
MySQL [xxuer]> explain SELECT -> count(*) -> FROM -> t_cmdb_app_version a -> INNER JOIN -> (SELECT -> pid -> FROM -> t_cmdb_app_relation UNION SELECT -> rp_id -> FROM -> t_cmdb_app_relation) b ON a.id = b.pid;+----+--------------+---------------------+--------+---------------+---------+---------+-------+------+--------------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+--------------+---------------------+--------+---------------+---------+---------+-------+------+--------------------------+| 1 | PRIMARY || ALL | NULL | NULL | NULL | NULL | 766 | Using where || 1 | PRIMARY | a | eq_ref | PRIMARY | PRIMARY | 4 | b.pid | 1 | Using where; Using index || 2 | DERIVED | t_cmdb_app_relation | ALL | NULL | NULL | NULL | NULL | 383 | NULL || 3 | UNION | t_cmdb_app_relation | ALL | NULL | NULL | NULL | NULL | 383 | NULL || NULL | UNION RESULT | | ALL | NULL | NULL | NULL | NULL | NULL | Using temporary |+----+--------------+---------------------+--------+---------------+---------+---------+-------+------+--------------------------+5 rows in set (0.00 sec)
以上就是mysql 优化中如何进行IN换INNER JOIN,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
更多
知识
篇文章
查询
实用
代码
内容
就是
工作会
文章
看吧
知识点
行业
详情
资讯
资讯频道
跟着
部分
问题
频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
面向对象和面向过程软件开发
舟山财务软件开发公司
招软件开发的有哪些专科学校
青浦区技术软件开发代理品牌
阿里云自定义监控数据库
厦门翔安软件开发培训
数据库外键错误怎么更改
北京智慧团建软件开发专业制作
数据库是存id还是存姓名
河北联想服务器续保安装
建数据库工具
c 数据库添加
广电网络技术维护考试
网络安全专业对显卡的要求
单机 文件数据库 开源
局 网络安全制度
番茄易行软件开发
SGD酿酒酵母数据库
深圳市百顺通网络技术有限公
丰源科技推出互联网
怎么登录猫和老鼠比赛服务器
软件开发环境缩写含义
绍兴云软件开发
软件开发测试性格照片
生存进化服务器文件保存在哪
单机 文件数据库 开源
网络安全i区ii区
英雄联盟显示一直正在连接服务器
qt里怎么查询数据库结果
软件开发中什么是渲染