Maison  >  Article  >  base de données  >  Comment implémenter l'ajout, la suppression, la modification et l'interrogation d'un index mysql ?

Comment implémenter l'ajout, la suppression, la modification et l'interrogation d'un index mysql ?

青灯夜游
青灯夜游original
2020-10-14 16:45:563193parcourir

Dans MySQL, vous pouvez utiliser l'instruction "CREATE INDEX" pour ajouter un index ; utiliser l'instruction "SHOW INDEX" pour afficher l'index ; utiliser l'instruction "DROP INDEX" pour supprimer l'index et modifier l'index ; index en supprimant l'index d'origine. Créez ensuite un index avec le même nom que nécessaire pour modifier l'index.

Comment implémenter l'ajout, la suppression, la modification et l'interrogation d'un index mysql ?

(Tutoriel recommandé : Tutoriel vidéo mysql)

Création d'un index mysql

Créer un index fait référence à l'établissement d'un index sur une ou plusieurs colonnes d'une table, ce qui peut améliorer la vitesse d'accès à la table. La création d'index est importante pour le fonctionnement efficace d'une base de données MySQL.

Syntaxe de base

MySQL propose trois méthodes de création d'index :

1) Utilisez l'instruction CREATE INDEX

Vous pouvez utiliser l'instruction CREATE INDEX spécifiquement pour créer des index afin de créer un index sur une table existante, mais cette instruction ne peut pas créer de clé primaire.

Format de syntaxe :

CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC])

La description de la syntaxe est la suivante :

  • 5312dfcb8759670e3714298069abce5d : Spécifiez le nom de l'index. Plusieurs index peuvent être créés sur une table, mais chaque index possède un nom unique dans la table.

  • 87031497877ef0fde159265152a1fea9 : Spécifiez le nom de la table pour créer un index.

  • 895a828a5767d0ff83c19d6a93c7da7c : Spécifiez le nom de la colonne pour créer un index. Vous pouvez généralement envisager d'utiliser les colonnes qui apparaissent fréquemment dans la clause JOIN et la clause WHERE de l'instruction de requête comme colonnes d'index.

  • 0249338b4fda8f18157ad6a493230aec : Facultatif. Spécifie que les caractères de longueur précédant la colonne sont utilisés pour créer l'index. La création d'un index utilisant une partie d'une colonne peut aider à réduire la taille du fichier d'index et à économiser l'espace occupé par les colonnes d'index. Dans certains cas, seul le préfixe d'une colonne peut être indexé. La longueur d'une colonne d'index a une limite maximale de 255 octets (1 000 octets pour les tables MyISAM et InnoDB). Si la longueur d'une colonne d'index dépasse cette limite, elle ne peut être indexée qu'en utilisant le préfixe de la colonne. De plus, les colonnes de type BLOB ou TEXT doivent également utiliser des index de préfixe.

  • ASC|DESC : facultatif. ASC spécifie que l'index est trié par ordre croissant, DESC spécifie que l'index est trié par ordre décroissant et la valeur par défaut est ASC.

2) Utilisation de l'instruction CREATE TABLE

L'index peut également être créé lors de la création de la table (CREATE TABLE). Ajoutez les instructions suivantes à l'instruction CREATE TABLE. Format de syntaxe :

CONSTRAINT PRIMARY KEY [索引类型] (<列名>,…)

Ajoutez cette instruction dans l'instruction CREATE TABLE pour indiquer que la clé primaire de la table est créée lors de la création d'une nouvelle table.

Format de syntaxe :

KEY | INDEX [<索引名>] [<索引类型>] (<列名>,…)

Ajoutez cette instruction dans l'instruction CREATE TABLE pour créer un index pour la table lors de la création d'une nouvelle table.

Format de syntaxe :

UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)

Ajoutez cette instruction dans l'instruction CREATE TABLE pour créer un index unique pour la table lors de la création d'une nouvelle table.

Format de syntaxe :

FOREIGN KEY <索引名> <列名>

Ajoutez cette instruction dans l'instruction CREATE TABLE pour créer une clé étrangère à la table lors de la création d'une nouvelle table.

Lorsque vous utilisez l'instruction CREATE TABLE pour définir les options de colonne, vous pouvez créer une clé primaire en ajoutant PRIMARY KEY directement après une définition de colonne. Lorsque la clé primaire est un index multi-colonnes composé de plusieurs colonnes, cette méthode ne peut pas être utilisée. Elle ne peut être implémentée qu'en ajoutant une clause PRIMARY KRY (7fb667abe63b2f43b0394465a3db07c5,...) à la fin de l'instruction. .

3) Utilisez l'instruction ALTER TABLE

L'instruction CREATE INDEX peut créer un index sur une table existante, et l'instruction ALTER TABLE peut également créer un index sur une table existante. Créer un index. Vous pouvez ajouter des index à une table existante tout en modifiant la table à l'aide de l'instruction ALTER TABLE. La méthode spécifique consiste à ajouter un ou plusieurs des composants de syntaxe suivants à l'instruction ALTER TABLE.

Format de syntaxe :

ADD INDEX [<索引名>] [<索引类型>] (<列名>,…)

Ajoutez ce composant de syntaxe dans l'instruction ALTER TABLE pour ajouter un index à la table lors de la modification de la table.

Format de syntaxe :

ADD PRIMARY KEY [<索引类型>] (<列名>,…)

Ajoutez ce composant de syntaxe dans l'instruction ALTER TABLE pour ajouter une clé primaire à la table lors de la modification de la table.

Format de syntaxe :

ADD UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)

Ajoutez ce composant de syntaxe dans l'instruction ALTER TABLE pour ajouter un index unique à la table lors de la modification de la table.

Format de syntaxe :

ADD FOREIGN KEY [<索引名>] (<列名>,…)

Ajoutez ce composant de syntaxe dans l'instruction ALTER TABLE pour ajouter une clé étrangère à la table lors de la modification de la table.

Afficher l'index mysql

Une fois l'index créé, vous pouvez utiliser des instructions SQL pour afficher l'index existant. Dans MySQL, vous pouvez utiliser l'instruction SHOW INDEX pour afficher les index créés sur une table.

Le format de syntaxe pour afficher l'index est le suivant :

SHOW INDEX FROM <表名> [ FROM <数据库名>]

La description de la syntaxe est la suivante :

  • 87031497877ef0fde159265152a1fea9 : Spécifiez le nom de la table de données pour laquelle l'index doit être consulté.

  • 02b4034ae04d9b2688ce9537de9acbd2 : Spécifiez la base de données où se trouve la table de données dans laquelle l'index doit être affiché, qui peut être omise. Par exemple, l'instruction de test SHOW INDEX FROM student FROM signifie afficher l'index de la table de données de l'étudiant dans la base de données du test.

Exemple

Les instructions SQL et les résultats d'exécution sont les suivants.

mysql> SHOW INDEX FROM tb_stu_info2\G
*************************** 1. row ***************************
        Table: tb_stu_info2
   Non_unique: 0
     Key_name: height
 Seq_in_index: 1
  Column_name: height
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: YES
   Index_type: BTREE
      Comment:
Index_comment:
1 row in set (0.03 sec)

Modification et suppression de l'index mysql

删除索引是指将表中已经存在的索引删除掉。不用的索引建议进行删除,因为它们会降低表的更新速度,影响数据库的性能。对于这样的索引,应该将其删除。

在 MySQL 中修改索引可以通过删除原索引,再根据需要创建一个同名的索引,从而实现修改索引的操作。

基本语法

当不再需要索引时,可以使用 DROP INDEX 语句或 ALTER TABLE 语句来对索引进行删除。

1) 使用 DROP INDEX 语句

语法格式:

DROP INDEX <索引名> ON <表名>

语法说明如下:

  • b493f009a433abb929a361542484fbbf:要删除的索引名。

  • a26d98d33123a70024fa8ba5642906c6:指定该索引所在的表名。

2) 使用 ALTER TABLE 语句

根据 ALTER TABLE 语句的语法可知,该语句也可以用于删除索引。具体使用方法是将 ALTER TABLE 语句的语法中部分指定为以下子句中的某一项。

  • DROP PRIMARY KEY:表示删除表中的主键。一个表只有一个主键,主键也是一个索引。

  • DROP INDEX index_name:表示删除名称为 index_name 的索引。

  • DROP FOREIGN KEY fk_symbol:表示删除外键。

注意:如果删除的列是索引的组成部分,那么在删除该列时,也会将该列从索引中删除;如果组成索引的所有列都被删除,那么整个索引将被删除。

删除索引

【实例 1】删除表 tb_stu_info 中的索引,输入的 SQL 语句和执行结果如下所示。

mysql> DROP INDEX height
    -> ON tb_stu_info;
Query OK, 0 rows affected (0.27 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> SHOW CREATE TABLE tb_stu_info\G
*************************** 1. row ***************************
       Table: tb_stu_info
Create Table: CREATE TABLE `tb_stu_info` (
  `id` int(11) NOT NULL,
  `name` char(45) DEFAULT NULL,
  `dept_id` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `height` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)

【实例 2】删除表 tb_stu_info2 中名称为 id 的索引,输入的 SQL 语句和执行结果如下所示。

mysql> ALTER TABLE tb_stu_info2
    -> DROP INDEX height;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> SHOW CREATE TABLE tb_stu_info2\G
*************************** 1. row ***************************
       Table: tb_stu_info2
Create Table: CREATE TABLE `tb_stu_info2` (
  `id` int(11) NOT NULL,
  `name` char(45) DEFAULT NULL,
  `dept_id` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `height` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn