失效链接处理 |
MySQL优化 PDF 下载
本站整理下载:
相关截图:
主要内容:
课程介绍
MySQL是使用最为广泛的开源数据库系统,是后端开发工程师,架构师,运维工程师,DBA,面试中几乎必定被问
到的内容。本次课程以面试真题为起点,结合MySQL必问的热点技能为方向,覆盖MySQL面试相关的方方面面,梳理
和总结相关知识点。 通过本课程的学习,不仅可以深入了解MySQL数据库,也能助力轻松面试,获得心怡的工作机
会。
主要内容目标
MySQL常见基础面试热点
MySQL语句的执行顺序
MySQL内外,全连接深入
存储引擎的选择和区别
存储过程,函数,触发器
锁问题深入
事物与隔离级别深入
MySQL数据库优化问题
MySQL数据库优化方案
MySQL索引深入
MySQL索引失效的避免
MySQL其他性能优化方案
MySQL常见问题和大厂面试题解决
第一章 Mysql数据库基础面试热点
目标 掌握数据库范式
什么是范式
创建表的规则,指导我们后期如何去设计自己的表。
数据库表规范化的好处:
减少数据的冗余。
减少后期Java代码的工作量。
三大范式小结
反三范式
反3NF:为了提高数据的性能,增加冗余字段,以便提高查询性能
目标 Select语句执行顺序
了解SQL Select语句完整的执行顺序,有利于熟练掌握SQL的编写,Select语句的执行顺序也是开发中常考的内容。
SQL语言不同于其他编程语言的最明显特征是处理代码的顺序。在大多数据库语言中,代码按编码顺序被处理。但在
SQL语句中,第一个被处理的是FROM,而不是第一出现的SELECT。
代码编写顺序
select distinct 查询字段
from 表名
JOIN 表名
ON 连接条件
where 查询条件
group by 分组字段
having 分组后条件
order by 排序条件
limit 查询起始位置, 查询条数
测试脚本:
SELECT DISTINCT <select_list>
FROM <left_table>
<join_type> JOIN <right_table>
ON <join_condition>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>
CREATE TABLE tb_customer
(
customer_id VARCHAR(10) NOT NULL,
city VARCHAR(10) NOT NULL,
PRIMARY KEY(customer_id)
)ENGINE=INNODB DEFAULT CHARSET=UTF8;
CREATE TABLE tb_order(
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id VARCHAR(23)
)ENGINE=INNODB DEFAULT CHARSET=UTF8;;
INSERT INTO tb_customer(customer_id,city) VALUES('163','hangzhou');
INSERT INTO tb_customer(customer_id,city) VALUES('9you','shanghai');
INSERT INTO tb_customer(customer_id,city) VALUES('tx','hangzhou');
INSERT INTO tb_customer(customer_id,city) VALUES('baidu','hangzhou');
INSERT INTO tb_order(customer_id) VALUES('163');
查询来自杭州,并且订单数少于2的客户。
Mysql读取顺序
from 表名
ON 连接条件
JOIN 表名
where 查询条件
group by 分组字段
having 分组后条件
select distinct 查询字段
order by 排序条件
limit 查询起始位置, 查询条数
整体过种
1.先对多表进行关系,根据条件找出符合条件的记录
2.在符合条件的基础上进行再次where条件筛选
3.对筛选出来的内容进行分组操作
4.分组完成后, 使用having再次筛选出满足条件的记录
5.取所满足条件的记录
6.对取出的记录进行排序
7.最终从取出的记录当中获取多少条记录显示出来
示例图
INSERT INTO tb_order(customer_id) VALUES('163');
INSERT INTO tb_order(customer_id) VALUES('9you');
INSERT INTO tb_order(customer_id) VALUES('9you');
INSERT INTO tb_order(customer_id) VALUES('9you');
INSERT INTO tb_order(customer_id) VALUES('tx');
INSERT INTO tb_order(customer_id) VALUES(NULL);
SELECT a.customer_id, COUNT(b.order_id) AS total_orders
FROM tb_customer a LEFT JOIN tb_order b ON a.customer_id = b.customer_id
WHERE a.city = 'hangzhou'
GROUP BY a.customer_id
HAVING COUNT(b.order_id) < 2
ORDER BY total_orders DESC;
|