mysql门派年龄最大的人_MySQL高级 第12章练习
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章练习相关推荐
- mysql门派年龄最大的人_目前活着年龄最大的人
每逢老人过生日,子女都会祝他长命百岁,但事实上,长命百岁能过百岁的人少之又少.那么大家知道中国现在活着的最长寿的人是谁吗?下面让小编为大家揭晓答案吧! 比正式的历史文献记载最长寿者年长14岁 中新网曾 ...
- mysql查找三个年龄最大的人_mysql 查寻重复姓名且年龄最大的列表 - count
1.任何情况下SELECT COUNT(*) FROM tablename是最优选择:2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = 'value' ...
- mysql 先删后增 更新_MySQL 高级操作——新增数据、更新数据、删除数据、查询数据...
新增数据 多数据插入 只要写一次insert指令,但是可以插入多条记录 语法:insert into 表名 [(字段列表)] values (值列表1),(值列表2),(值列表3); 主键冲突 主键冲 ...
- mysql内循环是什么人_mysql循环
关于 mysql循环的搜索结果 回答 首先理解函数:mysql_fetch_row() 从和结果标识 data 关联的结果集中取得一行数据并作为数组返回.每个结果的列储存在一个数组的单元中,偏移量从 ...
- mysql 部门表_MySQL高级
本文大纲 环境 win10-64 MySQL Community Server 5.7.1 mysqld –version可查看版本 官方文档 SQL执行顺序 手写顺序 我们可以将手写SQL时遵循的格 ...
- mysql 修改库的校对集_mysql数据库的基本操作(增删改查、字符集、校对集)
MySQL数据库概述 MySQL数据库是经典的关系型数据库管理系统,MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Dat ...
- 每日程序C语言47-找到年龄最大的人并输出
题目: 找到年龄最大的人,并输出 程序分析 结构体的定义 主要代码 main.c static struct man {char name[20];int age; }person[N]={" ...
- mysql 分片 数据迁移_简述MySQL分片中快速数据迁移_MySQL
推荐阅读:MySQL 数据库跨操作系统的最快迁移方法 mysql 备份与迁移 数据同步方法 操作实践背景: travelrecord表定义为10个分片,尝试将10个分片中的2个分片转移到第二台MySQ ...
- mysql 登录默认实例_【MySQL案例】mysql本机登录-S失灵_mysql
[mysql案例]mysql本机登录-S失效 1.1.1. mysql本机登录mysql时,-S参数失效 [环境描述] mysql5.5.14 [问题描述] 配置了多实例 实例1 实例2 datadi ...
最新文章
- 14门Linux课程,打通你Linux的任督二脉!
- 时序分析:DTW算法(基于模板)
- 获得SD卡的剩余容量
- 1.django 开发环境搭建
- pb将datawindow数据导出EXCEL
- 里面怎么定义变量_小哥今天要给朋友们分享一下Java编程语言中的变量与常量的区别...
- SSL请求trustStore的两种注册方式
- FPGA状态机一段式
- mysql教程实验4.1_【MySQL】数据库课程实验
- ug侧铣头编程_数控UG编程,四轴前倾角和侧倾角
- 【智能司法】可解释的Rationale增强罪名预测系统
- 阿里云推出全球云网络人才赋能计划,打造云网络认证体系
- 工具类APP如何做ASO优化推广
- 你为什么来日本做IT?日本IT优劣谈
- 第 16 章	下载数据
- java8 stream中Comparator.comparing排序
- cc讲故事_停止讲故事
- 产品定位--如何进行互联网产品定位/制定产品目标?
- 基于天问block编译环境下ASRPRO语音芯片程序编写教程(二)语音识别,GPIO输入输出,PWM输出篇
- 3.5 二维随机变量函数的分布
热门文章
- CodeForces - 798B Mike and strings
- HDU2151 Worm【DP】
- HDU3789 奥运排序问题【序列处理】
- matlab 音频处理、Python音频处理
- pandas 时间序列分析(一)—— 基础
- 卷积与反卷积、步长(stride)与重叠(overlap)及 output 的大小
- numpy 常用api(三)
- 计算机辅助设计实训报告范文,cad室内实训报告范文
- ftp服务器不能读取文件内容_使用file_get_contents()函数读取文件内容
- python自动化办公真的好用吗-用 Python 自动化办公,我与大神之间的差距一下就拉小了...