Maison  >  Article  >  base de données  >  Introduction aux méthodes d'affichage, de création et de suppression d'index dans MySQL

Introduction aux méthodes d'affichage, de création et de suppression d'index dans MySQL

黄舟
黄舟original
2017-12-06 10:33:041819parcourir

Je pense que tout le monde traitera de MySQL dans le développement. Cet article présente principalement la méthode de visualisation, de création et de suppression de index dans MySQL, et analyse MySQL en détail sous la forme de. exemples. Le rôle des index, ainsi que les compétences de mise en œuvre associées pour afficher, créer et supprimer des index !

Les exemples de cet article décrivent comment afficher, créer et supprimer des index dans MySQL. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

1. Fonction d'index

Sur la colonne d'index, en plus de la recherche ordonnée mentionnée ci-dessus, la base de données utilise diverses technologies de positionnement rapide pour améliorer considérablement l'efficacité de la requête. Surtout lorsque la quantité de données est très importante et que la requête implique plusieurs tables, l'utilisation d'index peut souvent accélérer la requête des milliers de fois.

Par exemple, il existe trois tables non indexées t1, t2 et t3, qui contiennent respectivement uniquement les colonnes c1, c2 et c3. Chaque table contient 1 000 lignes de données, qui font référence à la valeur de 1 à 1 000. . Rechercher La requête pour les lignes avec des valeurs égales est la suivante.

SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3

Le résultat de cette requête doit être de 1 000 lignes, chaque ligne contenant 3 valeurs égales. Pour traiter cette requête sans index, vous devez rechercher toutes les combinaisons des 3 tables pour obtenir les lignes qui correspondent à la Clause WHERE. Le nombre de combinaisons possibles est de 1 000 × 1 000 × 1 000 (milliards), donc évidemment la requête sera très lente.

Si chaque table est indexée, le processus de requête peut être considérablement accéléré. Le traitement des requêtes à l'aide d'index est le suivant.

(1) Sélectionnez la première ligne du tableau t1 pour afficher les données contenues dans cette ligne.
(2) Utilisez l'index de la table t2 pour localiser directement la ligne de t2 qui correspond à la valeur de t1. De même, en utilisant l'index de la table t3, localisez directement la ligne de t3 qui correspond à la valeur de t1.
(3) Scannez la ligne suivante du tableau t1 et répétez le processus précédent jusqu'à ce que toutes les lignes de t1 soient parcourues.

Dans ce cas, une analyse complète est toujours effectuée sur la table t1, mais des recherches d'index sur les tables t2 et t3 peuvent être effectuées pour récupérer directement les lignes de ces tables, ce qui est un million de fois plus rapide que sans index. .
À l'aide d'index, MySQL accélère la recherche des lignes dont la clause WHERE satisfait à la condition, et lors de l'exécution de requêtes de jointure multi-tables, il accélère la correspondance des lignes dans d'autres tables lors de l'exécution de jointures.

2. Créer un index

Vous pouvez créer un index lors de l'exécution de l'instruction CREATE TABLE, ou vous pouvez utiliser CREATE INDEX ou ALTER TABLE seuls pour ajouter un index à le tableau.

1. ALTER TABLE

ALTER TABLE est utilisé pour créer un index normal, un index UNIQUE ou un index PRIMARY KEY.

ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)

Où table_name est le nom de la table à indexer, column_list indique les colonnes à indexer, et lorsqu'il y a plusieurs colonnes, séparez-les par des virgules. Le nom d'index index_name est facultatif. Par défaut, MySQL attribuera un nom basé sur la première colonne d'index. De plus, ALTER TABLE permet de modifier plusieurs tables dans une seule instruction, de sorte que plusieurs index peuvent être créés en même temps.

2. CREATE INDEX

CREATE INDEX peut ajouter un index normal ou un index UNIQUE à la table.

CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)

table_name, index_name et column_list ont la même signification que dans l'instruction ALTER TABLE, et le nom de l'index n'est pas facultatif. De plus, vous ne pouvez pas utiliser l'instruction CREATE INDEX pour créer un index PRIMARY KEY.

3. Type d'index

Lors de la création d'un index, vous pouvez spécifier si l'index peut contenir des valeurs en double. S’il n’est pas inclus, l’index doit être créé en tant qu’index PRIMARY KEY ou UNIQUE. Pour un index unique à colonne unique, cela garantit que la colonne unique ne contient pas de valeurs en double. Pour les index uniques multicolonnes, il est garanti que la combinaison de plusieurs valeurs ne se répète pas.

L'index PRIMARY KEY et l'index UNIQUE sont très similaires. En fait, un index PRIMARY KEY n’est qu’un index UNIQUE portant le nom PRIMARY. Cela signifie qu'une table ne peut contenir qu'une seule PRIMARY KEY, car il est impossible d'avoir deux index portant le même nom dans une table.

L'instruction SQL suivante ajoute un index PRIMARY KEY sur sid à la table des étudiants.

Le code est le suivant :

ALTER TABLE students ADD PRIMARY KEY (sid)

4. Supprimer l'index

Vous pouvez utiliser l'instruction ALTER TABLE ou DROP INDEX pour supprimer l'index. Semblable à l'instruction CREATE INDEX, DROP INDEX peut être traitée comme une instruction dans ALTER TABLE. La syntaxe est la suivante.

DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY

Parmi elles, les deux premières instructions sont équivalentes et l'index index_name dans table_name est supprimé.
La troisième instruction n'est utilisée que lors de la suppression de l'index PRIMARY KEY, car une table ne peut avoir qu'un seul index PRIMARY KEY, il n'est donc pas nécessaire de spécifier le nom de l'index. Si aucun index PRIMARY KEY n'est créé mais que la table possède un ou plusieurs index UNIQUE, MySQL supprime le premier index UNIQUE.
Si une colonne est supprimée d'une table, l'index sera affecté. Pour un index multi-colonnes, si l'une des colonnes est supprimée, la colonne sera également supprimée de l'index. Si vous supprimez toutes les colonnes qui composent l'index, l'intégralité de l'index sera supprimée.

5. Voir l'index

mysql> show index from tblname;
mysql> show keys from tblname;

· Table
表的名称。
· Non_unique
如果索引不能包括重复词,则为0。如果可以,则为1。
· Key_name
索引的名称。
· Seq_in_index
索引中的列序列号,从1开始。
· Column_name
列名称。
· Collation
列以什么方式存储在索引中。在MySQL中,有值‘A'(升序)或NULL(无分类)。
· Cardinality
索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。
· Sub_part
如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。
· Packed
指示关键字如何被压缩。如果没有被压缩,则为NULL。
· Null
如果列含有NULL,则含有YES。如果没有,则该列含有NO。
· Index_type
用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
· Comment

总结:

通过本文的详细学习,相信有很多小伙伴对MySQL实现查看与创建以及删除索引的方法有了进一步的了解,希望对你有所帮助!

相关推荐:

MySQL如何创建和删除索引?

MySQL创建索引、重建索引、查询索引、删除索引

mysql建立索引删除索引很慢的解决

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