[MySQL] MySQL联表查询的执行顺序优化查询
SELECT t4.orgName,
t3.projectName,
t3.Partner,
t1.type,
COUNT(DISTINCT t1.imei) AS count
FROM `t_teminal` AS t1
LEFT JOIN `t_orgcode_orgid_rela` AS t2
ON t1.orgid = t2.orgId
LEFT JOIN `t_org_code` AS t3
ON t2.topOrganizationCode = t3.topOrganizationCode
LEFT JOIN `t_organization` AS t4
ON t1.orgid = t4.orgId
GROUP BY t1.orgid
联表查询会涉及到多个表的操作, 在索引的利用上会受限制. 上面的命令执行时间720s
以上面为例, 因为join查询的实现原理[MySQL 的Join及底层实现原理], 导致驱动表t1表的索引失效。而t1表的是最庞大的表, 约有50万行数据, 而其他表只是几百行的配置信息表.
所以利用t1表的索引是性能的关键.
由于统计中有groupby and count的需求,通过t1表即可实现, 顺势使用了子查询, 先处理完t1,再去匹配信息.
这种思路很简单,但应该对各种业务导向的报表查询都有帮助,.
下面的命令执行时间3.6s
SELECT
t4.orgName,
t3.projectName,
t3.Partner,
t1.type,
t1.count
FROM
(
SELECT
orgid,
type,
COUNT(DISTINCT imei) AS count
FROM
`t_teminal`
GROUP BY
orgid
) AS t1
LEFT JOIN `t_orgcode_orgid_rela` AS t2 ON t1.orgid = t2.orgId
LEFT JOIN `t_org_code` AS t3 ON t2.topOrganizationCode = t3.topOrganizationCode
LEFT JOIN `t_organization` AS t4 ON t1.orgid = t4.orgId
[MySQL] MySQL联表查询的执行顺序优化查询的更多相关文章
- SQL学习笔记四(补充-1-1)之MySQL单表查询补充部分:SQL逻辑查询语句执行顺序
阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SELECT语句关键字的定义顺序 SELE ...
- mysql五补充部分:SQL逻辑查询语句执行顺序
一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOI ...
- mysql 逻辑查询语句执行顺序
一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOI ...
- python 3 mysql sql逻辑查询语句执行顺序
python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_t ...
- Mysql补充部分:SQL逻辑查询语句执行顺序
一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOI ...
- mysql第四篇--SQL逻辑查询语句执行顺序
mysql第四篇--SQL逻辑查询语句执行顺序 一.SQL语句定义顺序 SELECT DISTINCT <select_list> FROM <left_table> < ...
- MySQL的联表查询
MySQL的联表查询 首选:分析查询的字段来自哪些表 进而:确定交集 然后:确定判断的条件 比如:从student表 和 result表 查学号.考试名称.学时.考试日期.考试成绩 表1: 学号 考试 ...
- 45、SQL逻辑查询语句执行顺序
一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOI ...
- 第四篇:记录相关操作 SQL逻辑查询语句执行顺序
http://www.cnblogs.com/linhaifeng/articles/7372774.html 一 SELECT语句关键字的定义顺序 SELECT DISTINCT <selec ...
随机推荐
- cf919D 线性dp+拓扑排序
/* 给定一张有向图,图上每个结点都有一个字符,现在要求出一条路径,要使路径上某字符出现的次数最多 如果有环,输出-1即可 拓扑排序+dp dp[i][26]表示排序到结点i时26个字符出现的次数 在 ...
- 官方版sublime Text3汉化和激活注册码
转载:https://www.cnblogs.com/chaonuanxi/p/9371837.html sublimeText3 很不错,前面几天下了vscore学习Node.js,感觉有点懵,今天 ...
- 谷歌、火狐浏览器 缩放为80% 时,margin值才正确
声明:小白的笔记,欢迎大神指点.联系QQ:1522025433. 在网页布局中,通过 谷歌浏览器或火狐浏览器 预览时,发现我们定义的盒模型width,height,margin,padding 值都是 ...
- Python零基础入门之Tkinter的对话框
这篇博客主要是总结一下Tkinter中的对话框的使用,值得一提的是自从python3.0之后关于关于对话框的模块(messagebox.filedialog.colorchooser)都被收归到了tk ...
- Nginx配置TCP请求转发
Nginx配置TCP请求转发 1.TCP请求转发基于stream在1.9版本前,需要单独编译安装该组建: # 依赖服务 [root@baolin conf]#yum -y install pcre-d ...
- TFS: 解决The build agent error - the session for this agent already exists
来源:http://ericphan.net/blog/2016/6/10/solving-the-tfs-build-agent-error-the-session-for-this-agent-a ...
- C#连接Oracle错误:OCIEnvCreate 失败,返回代码为 -1
处理某些数据需要从Oracle里读取数据 因为数据不多,简单方便直接用 System.Data.OracleClient 添加引用,写sql语句一气呵成,运行立刻报错 从没见过这错误啊… 上网搜索之… ...
- [POI2007]堆积木Klo
题解: dp定义方程的时候 好像也不能都用前一个来递推..这样就不能优化了 这题看了题解才想出来... 还是很简单的啊.... 我们定义f[i]表示前i个最大收益 那么j要能从i转移就得满足a[i]- ...
- python之requests 乱七八糟
1.预配置 import requests ss = requests.Session() ss.headers.update({'user-agent':'Mozilla/5.0 (Windows ...
- DirectoryEntry配置IIS7出现ADSI Error:未知错误(0x80005000)
一.错误情况 环境:win7+iis7.0 DirectoryEntry配置IIS7出现如下错误 或者是 下面一段代码在IIS6.0下运转正常,但IIS7.0下运转会出错: System.Direct ...