MySQL 8.0 官方文档 第八章 优化(二十三)—— 优化子查询、派生表、视图引用和公共表表达式

目录

第八章 优化(二十三)—— 优化子查询、派生表、视图引用和公共表表达式

8.2 优化SQL语句

8.2.2 优化子查询、派生表、视图引用和公共表表达式


8.2.2.1 使用半连接转换优化INEXISTS子查询谓词

8.2.2.2 使用物化优化子查询

8.2.2.3 使用EXISTS策略优化子查询

8.2.2.4 使用合并或物化优化派生表、视图引用和公共表表达式

8.2.2.5 派生条件下推优化


MySQL查询优化器对子查询的处理有以下可用的不同策略:

  • 对于与IN= ANYEXISTS谓词一起使用的子查询,优化器有以下选择:
    (1) 半连接
    (2) 物化(Materialization 译者:在8.2.2.2 节有专门的介绍)
    (3) EXISTS策略

  • 对于使用了NOT IN<> ALLNOT EXISTS谓词的子查询,优化器有以下选择:
    (1) 物化(Materialization 译者:在8.2.2.2 节有专门的介绍)
    (2) EXISTS策略

对于派生表,优化器有以下选择(也适用于视图引用和公共表表达式):

  • 将派生表合并到外部查询块中

  • 将派生表物化到内部临时表中

下面的讨论将提供有关上述优化策略的更多信息。

备注
使用子查询来更新单表的UPDATEDELETE语句有如下限制:即优化器不会使用半连接或物化子查询优化。作为一种解决方法,请尝试将它们重写为使用多表连接的UPDATEDELETE语句,不要使用子查询。

上一集 MySQL 8.0 官方文档 第八章 优化(二十二)—— 行构造器表达式优化和避免全表扫描

下一集 MySQL 8.0 官方文档 第八章 优化(二十四)—— 用半连接转换优化IN和EXISTS子查询谓词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值