Maison  >  Article  >  base de données  >  Explication détaillée de la façon dont MySQL crée des index (cas)

Explication détaillée de la façon dont MySQL crée des index (cas)

coldplay.xixi
coldplay.xixiavant
2021-03-24 09:59:575444parcourir

Explication détaillée de la façon dont MySQL crée des index (cas)

Cas : Créez la base de données index_test, créez deux tables de données test_table1 et test_table2 dans la base de données index_test selon la structure de la table suivante, et complétez la table de données selon les opérations de base du processus opérationnel.

(1) Connectez-vous à la base de données MySQL
(2) Créez la base de données index_test
(3) Créez la table test_table1
(4) Créez la table test_table2, le moteur de stockage est MyISAM
(5) Utilisez l'instruction alter table pour créer un index commun nommé ComDateIdx sur le champ de naissance de la table test_table2
(6) Utilisez l'instruction alter table pour ajouter un index unique nommé UniqIdx2 sur le champ id de la table test_table2 et organisez par ordre décroissant
(7) Utilisez create index pour créer un index combiné nommé MultiColidx2 sur les trois champs prénom, deuxième prénom et nom
(8) Utilisez create index pour créer un index de texte intégral nommé FTidx sur le champ de titre
(9) Utilisez l'instruction alter table supprime l'index unique nommé Uniqidx dans la table test_table1
(10) Utilisez l'instruction drop index pour supprimer l'index combiné nommé MultiColidx2 dans la table test_table2
Plusieurs points à noter

( Recommandations d'apprentissage gratuites : tutoriel vidéo mysql)


(1) Connectez-vous à la base de données MySQL
C:\Users\Hudie>mysql -h localhost -u root -p
Enter password: *******
(2)Créez la base de données index_test
mysql> create database index_test;Query OK, 1 row affected (0.06 sec)mysql> use index_test;Database changed
(3) Créez la table test_table1
mysql> create table test_table1    -> (
    -> id int not null primary key auto_increment,
    -> name char(100) not null,
    -> address char(100) not null,
    -> description char(100) not null,
    -> unique index uniqidx(id),
    -> index MultiColidx(name(20),address(30) ),
    -> index Comidx(description(30))
    -> );Query OK, 0 rows affected (0.11 sec)mysql> show create table test_table1 \G*************************** 1. row ***************************
       Table: test_table1Create Table: CREATE TABLE `test_table1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(100) NOT NULL,
  `address` char(100) NOT NULL,
  `description` char(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniqidx` (`id`),
  KEY `MultiColidx` (`name`(20),`address`(30)),
  KEY `Comidx` (`description`(30))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.06 sec)

Vous pouvez voir que 3 index ont été réussis créés dans la table test_table, chacun avec le nom uniqidx sur le champ id Un index unique sur les champs nom et adresse un index normal de longueur 30 sur le champ description ;

(4) Créez la table test_table2, le moteur de stockage est MyISAM
mysql> create table test_table2    -> (
    -> id int not null primary key auto_increment,
    -> firstname char(100) not null,
    -> middlename char(100) not null,
    -> lastname char(100) not null,
    -> birth date not null,
    -> title char(100) null
    -> )ENGINE=MyISAM;Query OK, 0 rows affected (0.07 sec)
(5) Utilisez l'instruction alter table pour créer un index commun nommé ComDateIdx sur le champ de naissance de la table test_table2
mysql> alter table test_table2 add index ComDateidx(birth);Query OK, 0 rows affected (0.13 sec)Records: 0  Duplicates: 0  Warnings: 0
(6) Utilisez l'instruction alter table pour ajouter un index unique nommé Uniqidx2 sur le champ id de la table test_table2
mysql> alter table test_table2 add unique index Uniqidx(id);Query OK, 0 rows affected (0.11 sec)Records: 0  Duplicates: 0  Warnings: 0
(7) Utilisez create index pour créer une combinaison nommée MultiColidx2 sur le prénom et le deuxième prénom field
mysql>  create index MultiColidx2 on test_table2(firstname,middlename);Query OK, 0 rows affected (0.12 sec)Records: 0  Duplicates: 0  Warnings: 0
(8) Utilisez create index pour créer un index de texte intégral nommé FTidx sur le champ de titre
mysql> create fulltext index ftidx on test_table2(title);Query OK, 0 rows affected (0.13 sec)Records: 0  Duplicates: 0  Warnings: 0
(9) Utilisez l'instruction alter table pour supprimer l'index unique nommé. Uniqidx dans la table test_table1
mysql> alter table test_table1 drop index uniqidx;Query OK, 0 rows affected (0.09 sec)Records: 0  Duplicates: 0  Warnings: 0
(10) Utilisez l'instruction drop index pour supprimer l'index combiné nommé MultiColidx2 dans la table test_table2
mysql> drop index MultiColidx2 on test_table2;Query OK, 0 rows affected (0.12 sec)Records: 0  Duplicates: 0  Warnings: 0
Quelques points à noter :

1. Les index sont si importants pour les performances de la base de données, comment les utiliser ?

  • Si la colonne d'index comporte moins de colonnes, elle nécessite moins d'espace disque et moins de frais de maintenance.
  • Si plusieurs index combinés sont créés sur une grande table, le fichier d'index se développera également rapidement. De plus, il existe davantage d’index, qui peuvent couvrir davantage de requêtes.
  • Essayez d'ajouter, de supprimer et de modifier des index sans affecter le schéma de la base de données ou la conception de l'application.

2. Essayez d'utiliser des index courts

  • pour indexer les champs de type chaîne. Si possible, vous devez spécifier une longueur de préfixe. Par exemple, si vous avez une colonne char(255), si la plupart des valeurs sont uniques dans les 10 ou 30 premiers caractères, il n'est pas nécessaire d'indexer la colonne entière.
  • Un index court peut non seulement améliorer la vitesse des requêtes, mais également économiser de l'espace disque et réduire les opérations d'E/S.

Recommandations d'apprentissage gratuites associées : base de données mysql(vidéo)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer