| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> With As多表查询 -> 正文阅读 |
|
[大数据]With As多表查询 |
目录 语法
举例表关系
? ? ? ? 如上所示,有一个员工表,一个组织表,员工表关联到组织表,通过app_dept_id关联。
? ? ? ? 使用上面的SQL,就可以查询两个表之间的数据,而不需要使用left join 关联。 ? ?分析?用explain可以看到这个SQL执行的大概过程。 首先是从表t,也就是ims_app_employee_info中过滤出100条数据,这个过程是很快的。 然后就是从ims_app_dept_info表,根据主键关联,速度也是很快的。 最后是table=derived3这个表,这是一个假表,应该是临时表,没有用到任何key,所以应该是从100条数据中过滤出来3条。 再看这张执行进程状态过程图,这里面查询时间总共是0.333s, ? ? ? ? 从上图大概能猜到,创建了临时表用于存放这些查询数据,后面就是执行with这个SQL语句。 ? ? ? ? ?这里有三个query end状态,并不是说执行了三次,也不是说移除了两张临时表。 ? ? ? ? 此处应该是进程执行是有时间的,query end表示查询结束,可以开始处理数据。 ? ? ? ? 而查询的数据是放在临时表中,数据处理完毕后会处于 removing tmp table。 ? ??????其实可以做个测试,比如explain select * from ims.ims_app_dept_info t,有时候也是会有三个query end状态。 ???????? mysql进程状态
? 使用左连接
? ?????????上述两个查询结果是一样的,执行时间也是基本相似,都是0.183s,也就是说基本对性能相差无几。 ? ? ? ? 但是从上述id的内容来看,猜测图一应该是执行了两次查询处理,图二可能只有一次。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:56:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |