位置: 编程技术 - 正文

MySQL的子查询及相关优化学习教程(mysql 子查询)

编辑:rootadmin

推荐整理分享MySQL的子查询及相关优化学习教程(mysql 子查询),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql 子查询,mysql子查询写法,mysql子查询写法,mysql 子查询,mysql子查询关键字,mysql子查询效率如何,mysql子查询写法,mysql中的子查询,内容如对您有帮助,希望把文章链接给更多的朋友!

一、子查询1、where型子查询(把内层查询结果当作外层查询的比较条件)

2、from型子查询(把内层的查询结果供外层再次查询)#用子查询查出挂科两门及以上的同学的平均成绩思路:

3、exists型子查询(把外层查询结果拿到内层,看内层的查询是否成立)

二、优化从句式的形式看,子查询分为特殊格式子查询和非特殊格式子查询,特殊格式的子查询中又包括IN、ALL、ANY、SOME、EXISTS等类型的子查询,对于有的类型的子查询,MySQL有的支持优化,有的不支持,具体情况如下。

示例一,MySQL不支持对EXISTS类型的子查询的优化:

EXISTS类型的相关子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,子查询存在,MySQL没有进一步做子查询的优化工作。

另外的一个EXISTS类型的相关子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,子查询存在,MySQL没有进一步做子查询的优化工作。

示例二,MySQL不支持对NOT EXISTS类型的子查询的优化:

NOT EXISTS类型的相关子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,子查询存在,MySQL没有进一步做子查询的优化工作。

另外的一个NOT EXISTS类型的相关子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,子查询存在,MySQL没有进一步做子查询的优化工作。

示例三,MySQL支持对IN类型的子查询的优化,按也有不支持的情况存在:

IN非相关子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,表t2被物化后,与表t1执行了半连接(semi join)。尽管有“subquery2”这样的内容看起来是子查询,但是表t2已经被上拉到表t1层执行了半连接,所以MySQL支持IN子查询优化为半连接操作。

另外一个IN非相关子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,子查询不存在,表t1和t2直接做了块嵌套循环半连接(Block Nested Loop),把子查询上拉到父查询中用嵌套循环半连接完成IN操作。另外,由于子查询上拉,使得增加连接条件“a1=a2”,而原先的条件“a2=”可以利用常量传递优化技术,使得“a1=a2=”,所以查询执行计划中,两个索引扫描的条件分别为:a1 = 、a2 = 。

另外一个IN非相关子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,子子查询不存在,表t1和t2直接做了块嵌套循环连接(Block Nested Loop),但属于半连接操作(semi join),把子查询上拉到父查询中用嵌套循环半连接完成IN操作。

示例四,MySQL支持对NOT IN类型的子查询的优化

NOT IN非相关子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,表t2做了子查询(SUBQUERY)。而子查询被物化(materialize)。所以,MySQL对于NOT IN子查询采用了物化的优化方式,但不支持子查询的消除。

另外一个NOT IN非相关子查询,查询执行计划如下:

MySQL的子查询及相关优化学习教程(mysql 子查询)

被查询优化器处理后的语句为:

从查询执行计划看,表t2做了子查询(SUBQUERY)。而子查询被物化(materialize)。所以,MySQL对于NOT IN子查询采用了物化的优化方式,但不支持子查询的消除。

示例五,MySQL支持对ALL类型的子查询的优化:

不相关的ALL子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,出现了子查询(SUBQUERY),但是,子查询被“<= <max>”操作符限制,而子查询中的被查询列a2上存在唯一索引,所以可以利用索引求最值,所以MySQL支持“>ALL”式的子查询优化,子查询只被执行一次即可求得最大值。

不相关的ALL子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,出现了子查询(SUBQUERY),但是被查询优化器处理后的语句中包含“exists”,这表明MySQL对于“=ALL”式的子查询优化用“EXISTS strategy”方式优化,所以MySQL支持“=ALL”式的子查询优化。

不相关的ALL子查询,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,出现了子查询(SUBQUERY),但是,子查询被“>= <min>”操作符限制,而子查询中的被查询列a2上存在唯一索引,所以可以利用索引求最值,所以MySQL支持“<ALL”式的子查询优化,子查询只被执行一次即可求得最小值。

示例六,MySQL支持对SOME类型的子查询的优化:

使用了“>SOME”式子的子查询被优化,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,出现了子查询(SUBQUERY),但是,子查询被“min”函数限制,而子查询中的被查询列a2上存在唯一索引,所以可以利用索引求最值,所以MySQL支持“>SOME”式的子查询优化,子查询只被执行一次即可求得最大值。

使用了“=SOME”式子的子查询被优化,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,没有出现了子查询,表t2被物化,与表t1进行了半连接。

使用了“<SOME”式子的子查询被优化,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,出现了子查询(SUBQUERY),但是,子查询被“max”函数限制,而子查询中的被查询列a2上存在唯一索引,所以可以利用索引求最值,所以MySQL支持“<SOME”式的子查询优化,子查询只被执行一次即可求得最大值。

示例七,MySQL支持对ANY类型的子查询的优化:

使用了“>ANY”式子的子查询被优化,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,出现了子查询(SUBQUERY),但是,子查询被“min”函数限制,而子查询中的被查询列a2上存在唯一索引,所以可以利用索引求最值,所以MySQL支持“>ANY”式的子查询优化,子查询只被执行一次即可求得最小值。

使用了“=ANY”式子的子查询被优化,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,没有出现了子查询,表t2被物化,与表t1进行了半连接。

使用了“<ANY”式子的子查询被优化,查询执行计划如下:

被查询优化器处理后的语句为:

从查询执行计划看,出现了子查询(SUBQUERY),但是,子查询被“max”函数限制,而子查询中的被查询列a2上存在唯一索引,所以可以利用索引求最值,所以MySQL支持“<ANY”式的子查询优化,子查询只被执行一次即可求得最大值。

Yii 连接、修改 MySQL 数据库及phpunit 测试连接 database1.修改protected/config/main.php去掉mysql数据库连接方式的注释,并且修改用户名,密码以及连接的数据库。2.新建protected/tests/unit/DbTest.php内容如下:phpc

MySQL中主键索引与聚焦索引之概念的学习教程 主键索引主键索引,简称主键,原文是PRIMARYKEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一

MySQL中的联合索引学习教程 联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是keyin

标签: mysql 子查询

本文链接地址:https://www.jiuchutong.com/biancheng/312351.html 转载请保留说明!

上一篇:MySQL中的事件调度基础学习教程(mysql中事件的作用)

下一篇:Yii 连接、修改 MySQL 数据库及phpunit 测试连接

  • 中型企业的标准是什么 划分标准
  • 企业所得税研发费用加计扣除条件
  • 未核销fyc
  • 研发人员差旅费可以资本化吗
  • 销售部门领用材料用于销售计入
  • 小额支出没有发票怎么做账
  • 未使用固定资产计提折旧计入
  • 410768金税盘
  • 法人名下的车辆费用如何进公司帐
  • 增值税小规模纳税人起征点
  • 自建生产用机器设备领用本企业生产的产品
  • 公司车辆转让需要缴纳印花税吗
  • 法院受理费用
  • 购入汽车
  • 软件企业增值税即征即退会计处理
  • 对公账户开通网银有什么好处
  • 建筑工程发票是增值税专用发票吗,可以抵扣吗
  • 补偿金满一年不满一年半
  • 小规模纳税人增值税优惠政策2023
  • 房产企业竞标取消通知
  • 增值税影不影响企业利润
  • 往来款项分为哪两类
  • 以产品分成方式销售商品
  • 免税单位无租使用房产怎么缴纳房产税
  • 如何理解增值税的三种类型?它们的区别是什么?
  • windows11怎么设置壁纸
  • 鸿蒙系统怎样关闭音乐
  • 家里的无线网连着连着就断了
  • 土地增值税清算的条件
  • php odbc
  • php://input用法
  • thinkphp5数据库操作
  • 税前扣除凭证管理办法第九条称小额零星支出是
  • 制造业企业资金管理
  • 转让应收账款会计分录
  • water gardens
  • 利润的构成要素包括
  • 银行贴现利息怎么做账务处理
  • 接口多继承的写法
  • php shell_exec
  • 定期定额自行申报表
  • 租房合同违约金200%合理吗
  • 收到费用报销单据应该怎么记账?
  • 发票验旧验的是哪些发票
  • sql2008还原
  • 农产品进项税额抵扣范围
  • 房地产行业概况
  • 应缴财政专户款年末有余额吗
  • 提取法定盈余公积金的比例是多少
  • 车辆etc设备
  • 上月发票如何冲红
  • 事业单位库存物品
  • 纸质承兑汇票怎么兑现步骤
  • 货物丢失怎么做分录
  • 预付账款的相关认定
  • 合伙企业与公司相比,有什么优势呢?
  • 税盘减免会计分录
  • 百分百控股收益都是股东的么
  • 加权净资产收益率越高越好吗
  • 其他业务支出包括哪些内容科目
  • windows自带的几个软件
  • windows历代版本一览
  • bd是什么文件
  • WinXP老显示器CRT显示器严重闪屏的修复方法
  • win10无法启动diagnostic policy service
  • js+html
  • 批处理常用命令总结
  • bootstrap表单模板
  • JavaScript运算符中谁拥有最高优先级
  • img可以设置的属性
  • 不通过肾门的结构都有什么
  • firefox background-image垂直平铺问题的解决方法
  • 网站渗透违法吗
  • python的opencv
  • 安卓开发例子
  • jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
  • unity的shader用法
  • js 上传
  • 仓储物流用地属于商业用地吗
  • 南昌 税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设