mysql优化联表查询_[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

SQL学习笔记四(补充-1-1)之MySQL单表查询补充部分:SQL逻辑查询语句执行顺序

阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SELECT语句关键字的定义顺序 SELE ...

mysql五补充部分:SQL逻辑查询语句执行顺序

一 SELECT语句关键字的定义顺序 SELECT DISTINCT FROM JOI ...

mysql 逻辑查询语句执行顺序

一 SELECT语句关键字的定义顺序 SELECT DISTINCT FROM JOI ...

python 3 mysql sql逻辑查询语句执行顺序

python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT FROM

Mysql补充部分:SQL逻辑查询语句执行顺序

一 SELECT语句关键字的定义顺序 SELECT DISTINCT FROM JOI ...

mysql第四篇--SQL逻辑查询语句执行顺序

mysql第四篇--SQL逻辑查询语句执行顺序 一.SQL语句定义顺序 SELECT DISTINCT FROM < ...

MySQL的联表查询

MySQL的联表查询 首选:分析查询的字段来自哪些表 进而:确定交集 然后:确定判断的条件 比如:从student表 和 result表 查学号.考试名称.学时.考试日期.考试成绩 表1: 学号 考试 ...

45、SQL逻辑查询语句执行顺序

一 SELECT语句关键字的定义顺序 SELECT DISTINCT FROM JOI ...

第四篇:记录相关操作 SQL逻辑查询语句执行顺序

http://www.cnblogs.com/linhaifeng/articles/7372774.html 一 SELECT语句关键字的定义顺序 SELECT DISTINCT

随机推荐

opencart二次开发小记

在controller中如果要调用model中数据或说方法可以这样写 $this->load->model('catalog/information');//model中的informat ...

Spring基础—— 泛型依赖注入

一.为了更加快捷的开发,为了更少的配置,特别是针对 Web 环境的开发,从 Spring 4.0 之后,Spring 引入了 泛型依赖注入. 二.泛型依赖注入:子类之间的依赖关系由其父类泛型以及父类之 ...

HTML DOM部分---事件 windows对象;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值