mysql 优化中如何进行IN换INNER JOIN
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本篇文章给大家分享的是有关mysql 优化中如何进行IN换INNER JOIN,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。今天撸代码时
千家信息网最后更新 2025年01月22日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安全错误
数据库的锁怎样保障安全
CIELA数据库
软件工程属于计算机网络技术吗
上海数据库泄露
软件开发用命换钱
mc服务器建筑教程现代风
dns服务器详解
大学生如何加强网络安全自律
语音会议软件开发一般哪家好
本地文件发布服务器
dns服务器删除会有影响吗
校园网络安全的措施
数据库增加字段column
孤岛惊魂6游客陷阱服务器机房
卫宁互联网科技怎么样
软件开发项目wbs划分
mysql数据库培训
网络安全行业的核心技术
北京康益泉互联网科技
江门数字软件开发价钱
数据为什么要存入数据库
都有什么教学软件开发
怎么利用云服务器赚钱
应对机关网络安全采取的措施
远程服务器和浏览器哪个好
大型软件开发用途
jsp取出数据库数据
高版本数据库恢复到低版本
sql数据库新建作业
软件开发技术图片
今年软件开发市场