使用两张大小差距比较大的表来进行测试

前言:在使用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)相关推荐

  1. mysql or的效率_Mysql比较exists与in以及or的效率分析

    日常入坑 一直以为sql优化中in的效率一定比exists低,所以在一次接口中将原来的in改成了exists,自认为效率一定会比之前高,结果被狠狠打脸. b表的数据导入导致这个接口的查询极慢,需要5秒 ...

  2. mysql if exists用法_MySQL中EXISTS的用法

    比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID F ...

  3. mysql 随机函数 效率_MySQL 随机函数获取数据速度和效率分析

    在mysql中带了随机取数据的函数,在mysql中我们会有rand()函数,很多朋友都会直接使用,如果几百条数据肯定没事,如果几万或百万时你会发现,直接使用是错误的.下面我来介绍随机取数据一些优化方法 ...

  4. mysql查询大于等于效率_mysql 中4 OR 6的效率要大于 !=5?

    哥们,你标题中的结论和对explain的理解都是错的. 第一. 这两种写法几乎是等价的,不存在哪个性能更好 为什么说是几乎呢,因为help_category_id < 4 or help_cat ...

  5. mysql right关键字_MYSQL 中的LEFT( RIGHT ) JOIN使用ON 与WHERE 筛选的差异

    有这样的一个问题:查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异. 可能只看着两个关键字看不出任何的问题.那我们使用实际的例子来说到底有没有差异. ...

  6. 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 ...

  7. mysql not exists优化_MySQL优化--NOT EXISTS和LEFT JOIN方式差异

    在MySQL中,我们可以将NOT EXISTS语句转换为LEFT JOIN语句来进行优化,哪为什么会有性能提升呢? 使用NOT EXISTS方式SQL为: SELECT count(1)FROMt_m ...

  8. mysql的exists解析_mysql中关于exists的深入讲解

    mysql中关于exists的讲解 我认为exists语法是mysql中一个很强大的工具,可以简单地实现某些复杂的数据处理. 下面我谈谈与exists有关的三个方面. all 与 any 首先,看到了 ...

  9. mysql中的if [not] exists

    最近在MySQL数据库的基础上开发分布式的数据库,需要支持一个if [not] exists语法.学习了SQL语法解析部分,总结下: 1.在MySQL中,创建表时支持create table if n ...

最新文章

  1. 计算机 二进制 中国,二进制与计算机
  2. sql基础语句大杂烩
  3. postman请求soap 请求_postman中请求如何传递对象到spring controller?
  4. HDU 3788 ZOJ问题
  5. python mro c3_python的MRO和C3算法
  6. Java:关于main方法的10道面试题
  7. C/C++打造《百万级人脸识别系统》
  8. 消防荷载楼板按弹性还是塑性计算_第二节 消防登高面、消防救援场地和灭火救援窗...
  9. SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求
  10. 梯度下降和导数的作用
  11. 【Java从0到架构师】分布式框架通信核心基础 - 序列化(JDK、Protobuf)、远程过程调用 RMI
  12. 创建计算机桌面快捷方式图标异常,桌面快捷方式图标显示异常,win7无法正常显示桌面图标怎么办?...
  13. 计算机组成原理常见英文缩写
  14. html5 application cache 空间限制,HTML5离线存储之Application Cache
  15. 无人驾驶技术的突破与挑战
  16. 11个简单的Java性能调优技巧
  17. 双人联网贪吃蛇C语言,关于C 双人贪吃蛇显示的问题
  18. 镇魂歌~Qt5容器类_1
  19. Firefox火狐快捷键
  20. 怎么看R语言是不是在运行_奥特曼的梗越来越多,是不是说特摄正从小众转为大众?你怎么看呢...

热门文章

  1. javafx小球运动
  2. ipv6连接数据库oracle,oracle连接数据库方式大全
  3. css案例2——黑白滤镜
  4. Spring Web : FormHttpMessageConverter
  5. 8.0服务器维护时间,魔兽世界8.0开服第一天遇紧急维护?网友:叫逆水寒还服务器...
  6. Android性能优化系列之布局优化,Android程序员校招蚂蚁金服
  7. 戴仁光:神奇的推广力量——软文
  8. echarts 词云图使用 + vue
  9. 【老生谈算法】matlab实现自动画玫瑰程序源码——画玫瑰
  10. 修建道路(最小生成树)