Mysql优化1


  

1 MySql逻辑架构

1.1 MySql逻辑架构图

在这里插入图片描述

1.2 总体分层

在这里插入图片描述

1.3 逻辑架构组成

在这里插入图片描述

1.4 MySql分层的好处

在这里插入图片描述

2 MySql存储引擎

2.1 Mysql存储引擎的概念

在这里插入图片描述

2.2 查看存储引擎及当前使用的存储引擎

show engines;

在这里插入图片描述

show variables like '%storage_engine%';

在这里插入图片描述

2.3 MyISAM 和 InnoDB的区别

在这里插入图片描述

3 SQL编写顺序和读取顺序

在这里插入图片描述
在这里插入图片描述

JOIN表名是指 要进行左连接还是右连接,即要展示那张表的数据

4 JOIN连接

4.1 示例表数据

在这里插入图片描述

DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `deptName` varchar(30) DEFAULT NULL,
  `address` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;


INSERT INTO `department` VALUES ('1', '研发部(RD)', '2层');
INSERT INTO `department` VALUES ('2', '人事部(HR)', '3层');
INSERT INTO `department` VALUES ('3', '市场部(MK)', '4层');
INSERT INTO `department` VALUES ('4', '后勤部(MIS)', '5层');
INSERT INTO `department` VALUES ('5', '财务部(FD)', '6层');

在这里插入图片描述


DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `dep_id` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `salary` decimal(10,2) DEFAULT NULL,
  `cus_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8;


INSERT INTO `employee` VALUES ('1', '鲁班', '1', '10', '1000.00', '1');
INSERT INTO `employee` VALUES ('2', '后裔', '1', '20', '2000.00', '1');
INSERT INTO `employee` VALUES ('3', '孙尚香', '1', '20', '2500.00', '1');
INSERT INTO `employee` VALUES ('4', '凯', '4', '20', '3000.00', '1');
INSERT INTO `employee` VALUES ('5', '典韦', '4', '40', '3500.00', '2');
INSERT INTO `employee` VALUES ('6', '貂蝉', '6', '20', '5000.00', '1');
INSERT INTO `employee` VALUES ('7', '孙膑', '6', '50', '5000.00', '1');
INSERT INTO `employee` VALUES ('8', '蔡文姬', '30', '35', '4000.00', '1');

4.2 内连接

SELECT * FROM EMPLOYEE E INNER JOIN DEPARTMENT D ON E.DEP_ID = D.ID;

在这里插入图片描述

4.3 左连接

SELECT * FROM EMPLOYEE E LEFT JOIN DEPARTMENT D ON E.DEP_ID = D.ID;

在这里插入图片描述

4.4 右连接

在这里插入图片描述

4.4 查询左右表独有数据

SELECT * FROM EMPLOYEE E LEFT JOIN DEPARTMENT D ON E.DEP_ID = D.ID
WHERE D.ID IS NULL
SELECT * FROM EMPLOYEE E RIGHT JOIN DEPARTMENT D ON E.DEP_ID = D.ID
WHERE E.DEP_ID IS NULL

4.5 全连接

在这里插入图片描述
在这里插入图片描述

4.6 查询左右表各自独有的数据

在这里插入图片描述

5 SQL性能下降的原因

在这里插入图片描述

6 索引

6.1 索引概述

在这里插入图片描述

6.2 索引为什么能快速查找数据

在这里插入图片描述

6.3 二分搜索树

在这里插入图片描述

二分搜索树不作为索引底层数据结构的原因:
1、数据量很大,查找也比较费时间
2、当插入时,按照一定顺序插入,会退化为链表

6.4 B-Tree树

在这里插入图片描述
在这里插入图片描述

6.5 B+Tree树

在这里插入图片描述
在这里插入图片描述

6.9 创建\查看\删除\更改索引

一千万条数据创建索引的优化效果:
1、没有创建索引,使用非主键字段查询,耗时92、给该字段添加索引,构建索引耗时 35 秒(一般在创建表的时候就会指定索引)
3、再次使用该字段进行查询 0.78

在这里插入图片描述

6.10 索引的建立和选择

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值