mysql 大表 驱动_MySql 小表驱动大表
在了解之前要先了解对应语法 in 与 exist。
in后的括号的表达式结果要求之输出一列字段。与之前的搜索字段匹配,匹配到相同则返回对应行。
mysql的执行顺序是先执行子查询,然后执行主查询,用子查询的结果按条匹配主查询。
exist后的括号里则无输出要求,exist判断后面的结果集中有没有行,有行则返回外层查询对应的行。
ps所以exist还可以这样写: 用常量替换* ,反正是判断有没有行,不需要实际传回的数据。
select * from A where exist(select 1 from B where B.id= A.id)
mysql的执行顺序是先执行主查询,将主查询的数据放在子查询中做条件验证。
大体看来貌似exist的执行效率比in低,但其实exists子查询在底层做了优化,会忽略select清单,也并不会对每条数据进行对比。
比如这里有两张表
在查询中最好使用小表驱动大表,因为在外层表循环内层的时候,会锁定外层表,如果大表在外,会锁定5k次 。
如果要求查询所有id相同的Aname 有两种查询方式
1.由B表驱动A表 会先执行子查询 大表驱动小表
2.由A表驱动B表 会先执行主查询 小表驱动大表
如果需求变为 查询所有id相同的Bname
1.小表驱动大表
2.大表驱动小表
这表明查询效果一样,可以从sql语句逻辑层面进行适当修改,从而提高查询效率。
参考网址:
Mysql 多表关联链接顺序说明
mysql8.0是可以改变执行顺序的,然后是否可以提高查询效率,也不清楚,一般用的少,了解下就可以了。
mysql 大表 驱动_MySql 小表驱动大表相关推荐
- Atiti.大企业病与小企业病 大公司病与小公司病
Atiti.大企业病与小企业病 大公司病与小公司病 1. 大企业病,一般会符合机构臃肿 .多重领导 .人才流失的特点.1 2. 大企业病避免方法1 3. 小企业病 1 3.1.1. 表现1 4. 如何 ...
- golang 拷贝大切片一定比小切片代价大吗
文章目录 问题描述 解答 李培冠博客 问题描述 拷贝大切片一定比小切片代价大吗? 解答 并不是,拷贝所有切片的代价都是一样的. 看一下源码,就很清楚了: type slice struct {arra ...
- mysql查询数据库结构_mysql查询数据库下的表结构
mysql查询数据库下的表结构 方法:1.使用DESCRIBE命令以表格的形式展示表结构,语法"DESCRIBE 表名;":2.使用"SHOW CREATE TABLE& ...
- mysql 横向分表合并_MySQL横向扩展-分库分表解决方案总结
从业务场景看分库分表 互联网行业中,业务场景通常写少读多的情况居多,在MySQL的使用前期,读性能大多可以通过SQL优化来解决,但随着业务的持续发展,单纯依靠SQL的查询优化会越来越难以达到业务服务要 ...
- mysql cluster 查看数据库表名称_MySQL Cluster如何创建磁盘表方法解读
MySQL Cluster采用一系列的Disk Data objects来实现磁盘表;接下来为您详细介绍 一.概念 MySQL Cluster采用一系列的Disk Data objects来实现磁盘表 ...
- mysql为什么要分库_mysql为什么要分库分表?
1 基本思想之什么是分库分表? 从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上. 2 基本思想之为什么要分库分表? 单表操作数据量有最优值 ...
- MYSQL数据库字段关联_MySQL数据库 字段操作 多表关系(更新中...)
外键 (foreign key) ## 外键 ```mysql # 作者(author):id,name,sex,age,mobile, detail_id # 作者详情(author_detail) ...
- mysql 对已有表分区_mysql怎么对先有表进行分区
mysql如何对先有表进行分区? 有一张表,已经创建了,是一张普通的表,先要对这张表进行hash分区,我用一下语句创建提示错误: mysql> alter table 33 -> part ...
- mysql 表丢失_Mysql数据库备份 部分数据表丢失 Mysql table doesn't exist 解决
问题: 直接拷贝data下的数据库数据进行备份,重装升级了数据库,直接复制备份数据到新的数据库data目录下,发现部分数据表不见了. 原因分析: 以表"Table"为例: 如类型是 ...
最新文章
- c++容器vector
- 一份微服务架构手稿图,彻底搞定微服务核心原理!
- 今天俺要说一说工厂方法模式(Factory)
- 《零基础看得懂的C语言入门教程 》——(二)C语言没那么难简单开发带你了解流程
- 电机与拖动,直流发电机实验,江南大学物联网自动化
- 5、jeecg 笔记之 minidao 条件判断
- 狗狗1岁相当于人类31岁!基于基因组甲基化图谱建立首个跨物种年龄转换公式...
- mysql -b -e_为什么 MongoDB 索引选择B-树,而 Mysql 索引选择B+树(精干总结)
- VS-watch窗口
- DYNAMIC_DOWNCAST STATIC_DOWNCAST IsKindOf
- linux ntfs 转换 无损,无损数据下NTFS转换FAT32分区
- 实战Detectron2— 训练人体关键点检测
- 2021朝阳启声学校高考成绩查询,梦在前方 路在脚下 ———潮阳启声学校2019届高考80天誓师大会...
- EasyReport报表工具
- android权限的最佳运用
- 台式计算机没有声音图标,win7电脑没有声音扬声器图标不见了怎么办?
- JAVA 并发编程学习总结
- java学习总结(16.05.25)eclipse的查找和替换功能 Ctrl+F
- 息县装修“茶几的选择”
- python樱花开放教程_Python画樱花树 !
热门文章
- 集合及其常见操作,创建,增加,删除,查找
- 蓝桥杯 基础练习 查找整数
- 集成学习 Ensemble Learing(???)
- 时隔25年重访 Linus:流量时代的“技术大师”
- Nginx Unit 1.8.0 发布,动态 Web 应用服务器
- Easy-RSA 3快速入门自述文件
- Python2读取Excel文件时候文件名称是中文的时候处理
- python实现播放音乐_python实现简易云音乐播放器
- java题1_java面试题1
- java解三角函数方程_Java 中的三角函数