Maison >base de données >tutoriel mysql >Exemples introduisant l'utilisation des index MySQL
Autres recommandations d'apprentissage gratuites associées : mysql Tutoriel(Vidéo)
SQL, la partie suivante expliquera pourquoi il est lent
et comment le rendre plus rapide.2. Analyseur de requêtes - expliquer
Fonction
: Grâce à cela, vous pouvez savoir où le SQL est lent et quels aspects doivent être optimisés dans le
colonne : Nous créons un table de données des employés
//查看是否开启慢查询日志 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%';Effet : Comme indiqué ci-dessous, vous pouvez voyez pourquoi c'était si lent avant, nécessitant un temps de réponse de quatre secondes
3 Utilisation de base de l'index//响应时间是3秒,超过了原先设定的一秒
mysql> select sleep(3);
. Amélioration de l'efficacité de la création d'index
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;
Liste des enseignants :
Si vous utilisez la recherche similaire, l'efficacité est toujours le même, il faut donc regarder Comment utilisez-vous 4. L'indice compositemysql> show index from employee\G;//主键会默认建一个id索引
est actuellement une analyse globale
//查询分析 mysql> explain select * from employee where name='柳峰';//创建普通索引 mysql> create index idx_name on employee(name);
Créer un index
//删除 mysql> drop index idx_name on employee;
//查的时候可以看到一个主键索引 mysql> show index from employee\G;
Aucun nom ne peut pas utiliser l'index
select * from employee where name ='柳峰';//查询分析 explain select * from employee where name ='柳峰'\G;
5. Index de couverture
En suivant les étapes ci-dessus, nous pouvons voir quatre index, le premier est Index de clé primaire
, suivi deindex composé
//创建索引 create index idx_name_salary_dept on employee(name,salary,dept);//查询分析 explain select * from employee where name ='柳峰'\G;Comment déclencher
Nous utilisons l'identifiant comme données de requête
// 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;
Vérifiez uniquement l'identifiant
mysql> explain select * from employee where salary=8800;mysql> explain select * from employee where dept='部门A';
name_salary_dept
mysql> show index from employee;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!