MySql 技术内幕 (查询处理和子查询)
Posted 将军上座
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql 技术内幕 (查询处理和子查询)相关的知识,希望对你有一定的参考价值。
一. 查询流程
1.查询流程中, 每个操作都产生一个虚拟表, 除了最后一个,其他对用户都是透明的.
2.查询流程
3. DISTINCT
如果在查询中指定了DISTINCT子句,则会创建一张内存临时表(内存中放不下就放磁盘),表结构和虚表一样,不同的是distinct列,增加了一个唯一索引,以此来去重数据;
4.
①parser(分析器)分析sql语句,optimizer(优化器))对SQL进行优化,选择一条最优路径选取数据.
②添加索引避免笛卡尔积的产生,大幅缩短语句运行的时间;
二. 子查询概述
子查询 : select中嵌套另一个select;
ANY,IN,SOME,ALL用法, in是some的别名; not in是 "<>all" 的别名;
三. 独立子查询
标量子查询, 多值子查询;
独立子查询:子查询对外部查询无依赖;
相关子查询: 子查询对外部查询有依赖;
四. 相关子查询(
)
五.
六. 派生表
从虚表中产生的,形式: FROM (subquery expression) as derived_table_alias;
没有物化,速度可能非常慢,尤其是大数据量的表;
七.
以上是关于MySql 技术内幕 (查询处理和子查询)的主要内容,如果未能解决你的问题,请参考以下文章
《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)