Index MySQL
L'établissement de l'index MySQL est très important pour le fonctionnement efficace de MySQL. L'index peut grandement améliorer la vitesse de récupération de MySQL.
Par exemple, si MySQL qui est correctement conçu et utilise des index est une Lamborghini, alors MySQL qui n'est pas conçu et utilise des index est un tricycle humain.
Les index sont divisés en index à colonne unique et en index combinés. Un index à une seule colonne signifie qu'un index ne contient qu'une seule colonne. Une table peut avoir plusieurs index à une seule colonne, mais il ne s'agit pas d'un index combiné. Index combiné, c'est-à-dire qu'un index contient plusieurs colonnes.
Lors de la création d'un index, vous devez vous assurer que l'index est appliqué aux conditions de l'instruction SQL query (généralement comme condition de la clause WHERE).
En fait, l'index est aussi une table, qui stocke la clé primaire et les champs d'index et pointe vers les enregistrements de la table d'entité.
Ce qui précède mentionne les avantages de l'utilisation des index, mais une utilisation excessive des index entraînera des abus. Par conséquent, l'index aura également ses inconvénients : bien que l'index améliore considérablement la vitesse des requêtes, il réduira également la vitesse de mise à jour de la table, comme INSERT, UPDATE et DELETE sur la table. Parce que lors de la mise à jour de la table, MySQL doit non seulement enregistrer les données, mais également enregistrer le fichier d'index. La création de fichiers d'index occupera de l'espace disque.
Index normal
Créer un index
C'est l'index le plus basique, il n'a aucune restriction. Il dispose des méthodes de création suivantes :
S'il est de type CHAR, VARCHAR, la longueur peut être inférieure à la longueur réelle du champ ; s'il est de type BLOB et TEXT, la longueur doit être spécifiée.CREATE INDEX indexName ON mytable(username(length));
Modifier la structure de la table
Spécifier directement la syntaxe deALTER mytable ADD INDEX [indexName] ON (username(length))
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
index lors de la création de la table
Indice uniqueDROP INDEX [indexName] ON mytable;
Il est similaire à l'index ordinaire précédent, sauf que la valeur de la colonne d'index doit être unique, mais les valeurs nulles sont autorisées. Dans le cas d'un index composite, la combinaison des valeurs des colonnes doit être unique. Il dispose des méthodes de création suivantes :
Créer un index
Modifier la structure de la tableCREATE UNIQUE INDEX indexName ON mytable(username(length))
ALTER mytable ADD UNIQUE [indexName] ON (username(length))
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
Il existe quatre façons d'ajouter des index à la table de données :
Les exemples suivants ajoutent des index à la table.ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。 ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。 ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。 ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。
mysql> ALTER TABLE testalter_tbl ADD INDEX (c);
mysql> ALTER TABLE testalter_tbl DROP INDEX (c);
La clé primaire ne peut agir que sur une seule colonne lors de l'ajout d'un index de clé primaire. , vous devez vous assurer que la clé primaire n'est pas la clé par défaut NOT NULL. Les exemples sont les suivants :
Vous pouvez également utiliser la commande ALTER pour supprimer la clé primaire :mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL; mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;
显示索引信息
你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。
尝试以下实例:
mysql> SHOW INDEX FROM table_name\G ........
【相关推荐】
1. 特别推荐:“php程序员工具箱”V0.1版本下载
3. 数据库设计那些事
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!