Préface
Ce sont les notes que j'ai prises en écoutant la conférence du professeur. Ceci est une adresse vidéo
Auteur: Chenyun Zhi se
concentre sur mon blog csdn , note que les connaissances Linux sont encore plus mises à jour
J'écris un blog uniquement en csdn
Il est préférable de soutenir cet article pour le visionner
Exemples d'utilisation des index MySQL
1. Journal des requêtes lent
//查看是否开启慢查询日志
mysql> show variables like '%slow%';
//临时开启慢查询日志
mysql> set global slow_query_log=ON;
//查看是否开启慢查询日志
mysql> show variables like '%slow%';
//查询超过多少时间就可以记录,上面是如果超过10秒就要记录
mysql> show variables like '%long%';
//改成一秒,如果超过一秒就写到慢日志里面去(一般一秒是最好的)
mysql> set long_query_time=1;
//查看日记存储方式,默认FILE
mysql> show variables like '%log_output%';
// 慢查询日志文件所在位置
mysql> show variables like '%datadir%';
//响应时间是3秒,超过了原先设定的一秒
mysql> select sleep(3);
Lorsque nous sommes allés archiver le dossier, nous avons constaté qu'il était stocké dans le journal des requêtes lentes
Cette partie explique comment trouver le SQL le plus lent dans le journal lent . La dernière partie expliquera pourquoi il est lent et comment il peut être plus rapide.
2. Analyseur de requêtes - expliquer
Rôle : Grâce à cela, nous pouvons savoir où afficher SQL est lent et quels aspects doivent être optimisés
Colonne: nous créons un tableau de données des employés
create table employee(
id int not null auto_increment primary key,
name varchar(30) comment '姓名',
sex varchar(1) comment '性别',
salary int comment '薪资(元)',
dept varchar(30) comment '部门'
);
insert into employee(name, sex, salary, dept) values('张三', '男', 5500, '部门A');
insert into employee(name, sex, salary, dept) values('李洁', '女', 4500, '部门C');
insert into employee(name, sex, salary, dept) values('李小梅', '女', 4200, '部门A');
insert into employee(name, sex, salary, dept) values('欧阳辉', '男', 7500, '部门C');
insert into employee(name, sex, salary, dept) values('李芳', '女', 8500, '部门A');
insert into employee(name, sex, salary, dept) values('张江', '男', 6800, '部门A');
insert into employee(name, sex, salary, dept) values('李四', '男', 12000, '部门B');
insert into employee(name, sex, salary, dept) values('王五', '男', 3500, '部门B');
insert into employee(name, sex, salary, dept) values('马小龙', '男', 6000, '部门A');
insert into employee(name, sex, salary, dept) values('龙五', '男', 8000, '部门B');
insert into employee(name, sex, salary, dept) values('冯小芳', '女', 10000, '部门C');
insert into employee(name, sex, salary, dept) values('马小花', '女', 4000, '部门B');
insert into employee(name, sex, salary, dept) values('柳峰', '男', 8800, '部门A');
//通过explain解读他,后面加一个\G便于阅读
mysql> explain select * from employee where name='柳峰'\G;
//扫描快捷
mysql> explain select * from employee where id=13\G;
Effet: comme le montre la figure ci-dessous, vous pouvez voir pourquoi il était si lent auparavant et qu'il fallait quatre secondes pour répondre
3. Utilisation de base de l'index
mysql> show index from employee\G;
//主键会默认建一个id索引
Amélioration de l'efficacité de la création d'index
//查询分析
mysql> explain select * from employee where name='柳峰';
//创建普通索引
mysql> create index idx_name on employee(name);
//删除
mysql> drop index idx_name on employee;
Liste des enseignants:
Si vous utilisez like pour rechercher, l'efficacité reste la même, cela dépend donc de la façon dont vous l'utilisez
4. Indice composite
//查的时候可以看到一个主键索引
mysql> show index from employee\G;
Actuellement tout le scan global
select * from employee where name ='柳峰';
//查询分析
explain select * from employee where name ='柳峰'\G;
Créer un index
//创建索引
create index idx_name_salary_dept on employee(name,salary,dept);
//查询分析
explain select * from employee where name ='柳峰'\G;
Vérifiez qu'il existe un nom à indexer
// name和salary
mysql> explain select * from employee where name ='柳峰' and salary=8800\G;
//name和dept
mysql> explain select * from employee where name ='柳峰' and dept='部门A'\G;
Impossible d'utiliser l'index sans nom
mysql> explain select * from employee where salary=8800;
mysql> explain select * from employee where dept='部门A';
V. Index de couverture
Selon les étapes ci-dessus, nous pouvons voir quatre index, le premier est l' index de clé primaire , suivi de l' index compositename_salary_dept
mysql> show index from employee;
Comment déclencher
Nous utilisons id comme données de requête
mysql> select * from employee;
mysql> select * from employee where id =11;
Vérifier uniquement l'identifiant
mysql> explain select id from employee employee where id=11\G;
mysql> explain select id from employee\G;
//查name,salary
mysql> explain select name,salary from employee;
//查name,salary,dept
mysql> explain select name,salary,dept from employee;
//因为没有sxe条件,所以只能做全部扫描type为null
mysql> explain select name,sex,salary,dept from employee;
Mon blog: https://blog.csdn.net/weixin_46654114
Je veux faire attention à mon site b: https://space.bilibili.com/391105864
Instructions de réimpression: Dites-moi, assurez-vous d'indiquer la source et joignez le lien de mon blog.
S'il vous plaît, donnez-moi un coup de pouce et encouragez-moi