1. 案例一

列出自己的掌门比自己年龄小的人员

更换为大表,进行分析:

2. 案例二

列出所有年龄低于自己门派平均年龄的人员

思路: 先取门派的平均年龄,再跟自己的年龄做对比!

如何优化:

①首先在子查询中,需要根据deptid做groupby操作,因此,需要在deptid上面建立索引;

②因为是inner join,因此会自动将小表作为驱动表,也就是说,分组后的tmp是驱动表,而e1是被驱动表;

③而在e1中,需要查询deptid和age两个字段,因此这两个字段也需要建立索引

结果:创建deptid和age的符合索引:   create index idx_deptid_age on emp(deptid,age);

3. 案例三

列出至少有2个年龄大于40岁的成员的门派

思路: 先查询大于40岁的成员,然后按照门派分组,然后再判断至少有2个的门派!

大表优化:

优化:

①两表关联,我们可以考虑将小表作为驱动表。

②group by的字段 id,deptName还可以建立索引: create index idx_id_deptName on dept(id,deptName);

③被驱动表的deptid作为关联字段,可以建立索引:create index idx_deptid on emp(deptid);

create index idx_id_deptname on dept(id,deptName);

4. 案例四

至少有2位非掌门人成员的门派

select d2.deptName from t_emp e inner join t_dept d2 on e.deptid=d2.id

left join t_dept d on e.id=d.ceo

where d.id is null and e.deptid is not null

group by d2.deptName,d2.id

having count(*)>=2;

切换大表:

explain select d2.deptName from emp e inner join dept d2 on e.deptid=d2.id

left join dept d on e.id=d.ceo

where d.id is null and e.deptid is not null

group by d2.deptName,d2.id

having count(*)>=2;

没有索引的情况下:

优化分析: 三个表关联,然后做group by分组!

①group by 的字段,可以加上索引:create index idx_deptname_id on dept(deptName,id);

②可以将部门表作为驱动表

③第一次join时,e表作为被驱动表,可以将deptid设置索引:create index idx_deptid on emp(deptid);

④最有一次join中,使用了dept表作为被驱动表,查询ceo字段,因此可以在ceo上面建立索引

create index idx_ceo on dept(ceo);

5. 案例五

列出全部人员,并增加一列备注“是否为掌门”,如果是掌门人显示是,不是掌门人显示否

6. 案例六

列出全部门派,并增加一列备注“老鸟or菜鸟”,若门派的平均值年龄>40显示“老鸟”,否则显示“菜鸟”

思路: 先从emp表求出,各门派的平均年龄,分组,然后在关联dept表,使用if函数进行判断!

优化:

①使用dept作为驱动表

②在dept上建立deptName和id的索引:create index idx_deptName_id on dept(deptName,id);

③在emp上建立deptid字段的索引: create index index_deptid on emp(deptid);

7. 案例七

显示每个门派年龄最大的人

思路:先查询emp表,求出每个门派年龄最大的人,并按照deptid分组;然后再次关联emp表,关联其他的信息!

优化思路:

①子查询中,emp表根据deptid进行分组,因此可以建立deptid字段的索引;

②inner join查询中,关联了age和deptid,因此可以在deptid,age字段建立索引

create index idx_deptid_age on emp(deptid,age);

上一篇: MySQL高级 第11章排序分组优化

下一篇: Mycat 一、Mycat介绍

mysql门派年龄最大的人_MySQL高级 第12章练习相关推荐

  1. mysql门派年龄最大的人_目前活着年龄最大的人

    每逢老人过生日,子女都会祝他长命百岁,但事实上,长命百岁能过百岁的人少之又少.那么大家知道中国现在活着的最长寿的人是谁吗?下面让小编为大家揭晓答案吧! 比正式的历史文献记载最长寿者年长14岁 中新网曾 ...

  2. mysql查找三个年龄最大的人_mysql 查寻重复姓名且年龄最大的列表 - count

    1.任何情况下SELECT COUNT(*) FROM tablename是最优选择:2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = 'value' ...

  3. mysql 先删后增 更新_MySQL 高级操作——新增数据、更新数据、删除数据、查询数据...

    新增数据 多数据插入 只要写一次insert指令,但是可以插入多条记录 语法:insert into 表名 [(字段列表)] values (值列表1),(值列表2),(值列表3); 主键冲突 主键冲 ...

  4. mysql内循环是什么人_mysql循环

    关于 mysql循环的搜索结果 回答 首先理解函数:mysql_fetch_row() 从和结果标识 data 关联的结果集中取得一行数据并作为数组返回.每个结果的列储存在一个数组的单元中,偏移量从 ...

  5. mysql 部门表_MySQL高级

    本文大纲 环境 win10-64 MySQL Community Server 5.7.1 mysqld –version可查看版本 官方文档 SQL执行顺序 手写顺序 我们可以将手写SQL时遵循的格 ...

  6. mysql 修改库的校对集_mysql数据库的基本操作(增删改查、字符集、校对集)

    MySQL数据库概述 MySQL数据库是经典的关系型数据库管理系统,MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Dat ...

  7. 每日程序C语言47-找到年龄最大的人并输出

    题目: 找到年龄最大的人,并输出 程序分析 结构体的定义 主要代码 main.c static struct man {char name[20];int age; }person[N]={" ...

  8. mysql 分片 数据迁移_简述MySQL分片中快速数据迁移_MySQL

    推荐阅读:MySQL 数据库跨操作系统的最快迁移方法 mysql 备份与迁移 数据同步方法 操作实践背景: travelrecord表定义为10个分片,尝试将10个分片中的2个分片转移到第二台MySQ ...

  9. mysql 登录默认实例_【MySQL案例】mysql本机登录-S失灵_mysql

    [mysql案例]mysql本机登录-S失效 1.1.1. mysql本机登录mysql时,-S参数失效 [环境描述] mysql5.5.14 [问题描述] 配置了多实例 实例1 实例2 datadi ...

最新文章

  1. 14门Linux课程,打通你Linux的任督二脉!
  2. 时序分析:DTW算法(基于模板)
  3. 获得SD卡的剩余容量
  4. 1.django 开发环境搭建
  5. pb将datawindow数据导出EXCEL
  6. 里面怎么定义变量_小哥今天要给朋友们分享一下Java编程语言中的变量与常量的区别...
  7. SSL请求trustStore的两种注册方式
  8. FPGA状态机一段式
  9. mysql教程实验4.1_【MySQL】数据库课程实验
  10. ug侧铣头编程_数控UG编程,四轴前倾角和侧倾角
  11. 【智能司法】可解释的Rationale增强罪名预测系统
  12. 阿里云推出全球云网络人才赋能计划,打造云网络认证体系
  13. 工具类APP如何做ASO优化推广
  14. 你为什么来日本做IT?日本IT优劣谈
  15. 第 16 章 下载数据
  16. java8 stream中Comparator.comparing排序
  17. cc讲故事_停止讲故事
  18. 产品定位--如何进行互联网产品定位/制定产品目标?
  19. 基于天问block编译环境下ASRPRO语音芯片程序编写教程(二)语音识别,GPIO输入输出,PWM输出篇
  20. 3.5 二维随机变量函数的分布

热门文章

  1. CodeForces - 798B Mike and strings
  2. HDU2151 Worm【DP】
  3. HDU3789 奥运排序问题【序列处理】
  4. matlab 音频处理、Python音频处理
  5. pandas 时间序列分析(一)—— 基础
  6. 卷积与反卷积、步长(stride)与重叠(overlap)及 output 的大小
  7. numpy 常用api(三)
  8. 计算机辅助设计实训报告范文,cad室内实训报告范文
  9. ftp服务器不能读取文件内容_使用file_get_contents()函数读取文件内容
  10. python自动化办公真的好用吗-用 Python 自动化办公,我与大神之间的差距一下就拉小了...