mysql exists 效率_Mysql之exists和inner join效率问题(1)
使用两张大小差距比较大的表来进行测试
前言:在使用laravel的过程中发现whereHas实现的方式是exists子查询,又听说exists尽量少使用,容易导致慢查询,于是就有了接下来两篇文章。
两张表结构如下:
app_user
app_feedback(user_id列建立索引)
很明显app_user表要比app_feedback表要大
----------------------------------------------------------------------------------------------------------------------------
测试方案1:
大表驱动小表(要大表数据)
Exists
SQL:
结果:
超过30s没出来结果......
查询计划:
驱动表全表扫描,被驱动表使用索引
Inner join
SQL:
结果:
查询计划:
驱动表关联时使用上了关联字段索引,被驱动表全表扫描
----------------------------------------------------------------------------------------------------------------------------
测试方案2:
小表驱动大表(要小表数据)
Exists
SQL:
结果:
查询计划:
两个表都使用上了索引
Inner join
SQL:
结果:
查询计划:
两个表都使用上了索引
从上面的测试结果来看,当两张表一大一小时,
小表驱动大表时,无论是是exists和inner join效率差距不大;但是当大表驱动小表时,inner join效率明显高于exists
。
结论:两张表大小差距比较大时,inner join比exists效率更高
mysql exists 效率_Mysql之exists和inner join效率问题(1)相关推荐
- mysql or的效率_Mysql比较exists与in以及or的效率分析
日常入坑 一直以为sql优化中in的效率一定比exists低,所以在一次接口中将原来的in改成了exists,自认为效率一定会比之前高,结果被狠狠打脸. b表的数据导入导致这个接口的查询极慢,需要5秒 ...
- mysql if exists用法_MySQL中EXISTS的用法
比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID F ...
- mysql 随机函数 效率_MySQL 随机函数获取数据速度和效率分析
在mysql中带了随机取数据的函数,在mysql中我们会有rand()函数,很多朋友都会直接使用,如果几百条数据肯定没事,如果几万或百万时你会发现,直接使用是错误的.下面我来介绍随机取数据一些优化方法 ...
- mysql查询大于等于效率_mysql 中4 OR 6的效率要大于 !=5?
哥们,你标题中的结论和对explain的理解都是错的. 第一. 这两种写法几乎是等价的,不存在哪个性能更好 为什么说是几乎呢,因为help_category_id < 4 or help_cat ...
- mysql right关键字_MYSQL 中的LEFT( RIGHT ) JOIN使用ON 与WHERE 筛选的差异
有这样的一个问题:查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异. 可能只看着两个关键字看不出任何的问题.那我们使用实际的例子来说到底有没有差异. ...
- mysql not exists 效率高_mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录
语句一:select count(*) from A where A.a not in (select a from B) 语句二:select count(*) from A left join B ...
- mysql not exists优化_MySQL优化--NOT EXISTS和LEFT JOIN方式差异
在MySQL中,我们可以将NOT EXISTS语句转换为LEFT JOIN语句来进行优化,哪为什么会有性能提升呢? 使用NOT EXISTS方式SQL为: SELECT count(1)FROMt_m ...
- mysql的exists解析_mysql中关于exists的深入讲解
mysql中关于exists的讲解 我认为exists语法是mysql中一个很强大的工具,可以简单地实现某些复杂的数据处理. 下面我谈谈与exists有关的三个方面. all 与 any 首先,看到了 ...
- mysql中的if [not] exists
最近在MySQL数据库的基础上开发分布式的数据库,需要支持一个if [not] exists语法.学习了SQL语法解析部分,总结下: 1.在MySQL中,创建表时支持create table if n ...
最新文章
- 计算机 二进制 中国,二进制与计算机
- sql基础语句大杂烩
- postman请求soap 请求_postman中请求如何传递对象到spring controller?
- HDU 3788 ZOJ问题
- python mro c3_python的MRO和C3算法
- Java:关于main方法的10道面试题
- C/C++打造《百万级人脸识别系统》
- 消防荷载楼板按弹性还是塑性计算_第二节 消防登高面、消防救援场地和灭火救援窗...
- SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求
- 梯度下降和导数的作用
- 【Java从0到架构师】分布式框架通信核心基础 - 序列化(JDK、Protobuf)、远程过程调用 RMI
- 创建计算机桌面快捷方式图标异常,桌面快捷方式图标显示异常,win7无法正常显示桌面图标怎么办?...
- 计算机组成原理常见英文缩写
- html5 application cache 空间限制,HTML5离线存储之Application Cache
- 无人驾驶技术的突破与挑战
- 11个简单的Java性能调优技巧
- 双人联网贪吃蛇C语言,关于C 双人贪吃蛇显示的问题
- 镇魂歌~Qt5容器类_1
- Firefox火狐快捷键
- 怎么看R语言是不是在运行_奥特曼的梗越来越多,是不是说特摄正从小众转为大众?你怎么看呢...
热门文章
- javafx小球运动
- ipv6连接数据库oracle,oracle连接数据库方式大全
- css案例2——黑白滤镜
- Spring Web : FormHttpMessageConverter
- 8.0服务器维护时间,魔兽世界8.0开服第一天遇紧急维护?网友:叫逆水寒还服务器...
- Android性能优化系列之布局优化,Android程序员校招蚂蚁金服
- 戴仁光:神奇的推广力量——软文
- echarts 词云图使用 + vue
- 【老生谈算法】matlab实现自动画玫瑰程序源码——画玫瑰
- 修建道路(最小生成树)