Maison base de données tutoriel mysql Quels sont les types d'index dans la base de données MySQL ? Méthodes d'établissement et avantages et inconvénients

Quels sont les types d'index dans la base de données MySQL ? Méthodes d'établissement et avantages et inconvénients

Aug 07, 2018 pm 02:55 PM
mysql索引

Cet article se concentrera sur la description des quatre types d'index de base de données masql. Comment créer un index de base de données ? Les colonnes apparaissant dans WHERE et JOIN doivent être indexées, mais pas entièrement, car MySQL n'utilise que <, <=, =, >, >=, BETWEEN, IN et parfois LIKE. J'espère que cet article pourra aider tout le monde. Tout d'abord, comprenons ce qu'est un index. Pour le résumer en une phrase : l'index est la clé d'une recherche rapide.

L'établissement de l'index MySQL est très important pour le fonctionnement efficace de MySQL. Ce qui suit présente plusieurs types d'index MySQL courants

Dans les tables de base de données, les champs d'indexation peuvent considérablement améliorer la vitesse des requêtes. Supposons que nous créions une table mytable :

Le code est le suivant :

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL );

Nous aléatoirement Il y a 10 000 enregistrements insérés, dont un : 5555, admin.

Lors de la recherche de l'enregistrement de username="admin" SELECT * FROM mytable WHERE username='admin';, si un index a été établi sur le nom d'utilisateur, MySQL peut trouver avec précision l'enregistrement sans aucune analyse. Au contraire, MySQL analysera tous les enregistrements, c'est-à-dire que 10 000 enregistrements seront interrogés.

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.

Les types d'index MySQL incluent :

1 Index ordinaire

Il s'agit de l'index le plus basique, il n'a aucune restriction. Il dispose des méthodes de création suivantes :

1. Créer un index

Le code est le suivant :

CREATE INDEX indexName ON mytable(username(length));

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, la même ci-dessous.

2. Modifier la structure de la table

Le code est le suivant :
ALTER mytable ADD INDEX [indexName] ON (username(length)) -- Spécifiez directement

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );

-- Syntaxe pour supprimer l'index :

DROP INDEX [indexName] ON mytable;

2. Index unique

Il est similaire à l'index ordinaire précédent, sauf que la valeur de la colonne d'index doit être unique, mais c'est autorisé. Il y a une valeur nulle. 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 :

Le code est le suivant :

CREATE UNIQUE INDEX indexName ON mytable(username(length))

--Modifier la structure de la table
ALTER mytable ADD UNIQUE [indexName] ON (username(length))
-- Spécifiez directement
CREATE TABLE mytable lors de la création de la table (ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username (longueur) ) );

3. Index de clé primaire

C'est un index unique spécial qui n'autorise pas les valeurs nulles. Généralement, l'index de clé primaire est créé en même temps lors de la création de la table :

Le code est le suivant :

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) ) ;

Bien sûr, vous pouvez également utiliser la commande ALTER. N'oubliez pas : une table ne peut avoir qu'une seule clé primaire.

4. Index combiné

Afin de comparer de manière vivante l'index à colonne unique et l'index combiné, ajoutez plusieurs champs au tableau :

Le code est comme suit :

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL

Afin d'aller plus loin); Pour extraire l'efficacité de MySQL, vous devez envisager de créer un index composite. Construisez simplement le nom, la ville et l'âge dans un index :

Le code est le suivant :

ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);[code]

Lors de la création du tableau, la longueur du nom d'utilisateur est de 16 et 10 est utilisé ici. En effet, la longueur du nom ne dépassera généralement pas 10, ce qui accélérera la requête d'index, réduira la taille du fichier d'index et améliorera la vitesse de mise à jour d'INSERT.

Si vous créez des index à colonne unique sur le nom d'utilisateur, la ville et l'âge respectivement, de sorte que la table ait trois index à colonne unique, l'efficacité de la requête sera très différente de l'index combiné ci-dessus, qui est bien inférieur que notre indice combiné. Bien qu'il existe actuellement trois index, MySQL ne peut utiliser que l'index à une seule colonne qui lui semble le plus efficace.

Établir un tel index combiné équivaut en fait à établir les trois ensembles d'index combinés suivants :

nom d'utilisateur, ville, âge nom d'utilisateur, ville nom d'utilisateur Pourquoi n'y a-t-il pas d'index combiné comme ville, âge ? Ceci est le résultat du « préfixe le plus à gauche » de l'index composite MySQL. La compréhension simple est de commencer la combinaison uniquement à partir de celle la plus à gauche. Non seulement les requêtes contenant ces trois colonnes utiliseront cet index combiné, mais le SQL suivant utilisera cet index combiné :
[code]
SELECT * FROM mytable WHREE username="admin" AND city ="Zhengzhou" SELECT * FROM mytable WHREE username="admin"

Les suivants ne seront pas utilisés :

Le code est le suivant :
SELECT * FROM mytable WHREE age=20 AND city="Zhengzhou" SELECT * FROM mytable WHREE city="Zhengzhou"

5. Comment créer un index

Jusqu'à présent, nous avons appris comment créer un index, puis nous Dans quelles circonstances faut-il créer un index ? De manière générale, les colonnes apparaissant dans WHERE et JOIN doivent être indexées, mais ce n'est pas tout à fait vrai car MySQL indexe uniquement <, <=, =, >, >=, BETWEEN, IN et parfois LIKE utilisera le indice. Par exemple :

Le code est le suivant :

SELECT t.Name FROM mytable t LEFT JOIN mytable m ON t.Name=m.username WHERE m.age=20 AND m.city ='Zhengzhou'

À ce stade, il est nécessaire d'indexer la ville et l'âge. Puisque le nom d'utilisateur de la table mytable apparaît également dans la clause JOIN, il est également nécessaire de l'indexer.

Je viens de mentionner que LIKE ne doit être indexé qu'à certains moments. Parce que MySQL n'utilisera pas l'index lors des requêtes commençant par les caractères génériques % et _. Par exemple, la phrase suivante utilisera l'index :

Le code est le suivant :
SELECT * FROM mytable WHERE username like'admin%'
La phrase suivante n'utilisera pas l'index :

Le code est le suivant :

SELECT * FROM mytable WHEREt Name like'%admin'

Par conséquent, vous devez faire attention aux différences ci-dessus lorsque vous utilisez LIKE.

6. Inconvénients des index

Ce qui précède parle des 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 :

1. 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.

2. La création de fichiers d'index occupera de l'espace disque. Généralement, ce problème n'est pas grave, mais si vous créez plusieurs index combinés sur une grande table, le fichier d'index se développera rapidement.

Les index ne sont qu'un facteur d'amélioration de l'efficacité. Si votre MySQL dispose d'une grande table de données, vous devez passer du temps à rechercher et à créer les meilleurs index ou à optimiser les instructions de requête.

7. Choses à noter lors de l'utilisation des index :

Lors de l'utilisation des index, il y a les conseils et précautions suivants :

1. ne contient pas Les colonnes avec des valeurs NULL

ne seront pas incluses dans l'index tant que la colonne contient des valeurs NULL. Tant qu'il y a une colonne dans l'index composite qui contient des valeurs NULL, cette colonne le sera. être invalide pour l'index composite. Par conséquent, lors de la conception de la base de données, nous ne devons pas laisser la valeur par défaut du champ être NULL.

2. Utilisez un index court

pour indexer la chaîne, et une longueur de préfixe doit être spécifiée si possible. Par exemple, si vous avez une colonne CHAR(255), si la plupart des valeurs sont uniques dans les 10 ou 20 premiers caractères, n'indexez pas la colonne entière. Les index courts améliorent non seulement la vitesse des requêtes, mais permettent également d'économiser de l'espace disque et des opérations d'E/S.

3. Tri des colonnes d'index

La requête MySQL n'utilise qu'un seul index, donc si l'index a été utilisé dans la clause Where, les colonnes classées par n'utiliseront pas l'index. Par conséquent, n'utilisez pas d'opérations de tri lorsque le tri par défaut de la base de données peut répondre aux exigences ; essayez de ne pas inclure le tri de plusieurs colonnes. Si nécessaire, il est préférable de créer des index composites pour ces colonnes.

4. Opération d'instruction similaire

Généralement, l'utilisation de l'opération similaire n'est pas encouragée. Si elle doit être utilisée, comment l'utiliser est également un problème. Comme « %aaa% » n'utilisera pas l'index mais comme « aaa% » utilisera l'index.

5. N'effectuez pas d'opérations sur les colonnes

Le code est le suivant :
sélectionnez * parmi les utilisateurs où YEAR(adddate)<2007;

sera dans chaque ligne Cela entraînera l'échec de l'index et effectuera une analyse complète de la table, nous pouvons donc le changer en :

Le code est le suivant :

sélectionnez * parmi les utilisateurs où adddate<' 2007-01-01' ;

6. N'utilisez pas les opérations NOT IN et <>

Ci-dessus, les types d'index MySQL sont présentés. J'espère que cela aide tout le monde.

Deux méthodes d'indexation :

Indice B-tree

Remarque : Il est appelé index btree, qui est un gros aspect Regardez, ils utilisent tous des arbres équilibrés, mais en termes d'implémentation spécifique, chaque moteur de stockage est légèrement différent. Par exemple, à proprement parler, le moteur NDB utilise T-tree
Myisam, et dans innodb, l'index B-tree. est utilisé par défaut. , la complexité théorique du temps de requête de B-tree est O(log2 (N-1)), N est le nombre de lignes dans la table de données

index de hachage
Pour les tables utilisant moteur de stockage en mémoire, la valeur par défaut est hash La complexité théorique du temps de requête de l'index et du hachage est O(1)

Recommandations associées :

Explication détaillée de l'utilisation de l'indexation et de l'analyse MySQL d'avantages et d'inconvénients

Avantages et inconvénients de l'indexation page 1/2

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Plusieurs situations d'échec de l'index MySQL Plusieurs situations d'échec de l'index MySQL Feb 21, 2024 pm 04:23 PM

Situations courantes : 1. Utiliser des fonctions ou des opérations ; 2. Conversion de type implicite ; 3. Utiliser différent de (!= ou <>) ; 4. Utiliser l'opérateur LIKE et commencer par un caractère générique ; Valeur : 7. Faible sélectivité de l'indice ; 8. Principe du préfixe le plus à gauche de l'indice composite ; 9. Décision de l'optimiseur ;

Dans quelles circonstances l'index MySQL échouera-t-il ? Dans quelles circonstances l'index MySQL échouera-t-il ? Aug 09, 2023 pm 03:38 PM

Les index MySQL échoueront lors d'une requête sans utilisation de colonnes d'index, de types de données incompatibles, d'une utilisation inappropriée des index de préfixe, de l'utilisation de fonctions ou d'expressions pour les requêtes, d'un ordre incorrect des colonnes d'index, de mises à jour fréquentes des données et d'un trop grand ou trop peu d'index. 1. N'utilisez pas de colonnes d'index pour les requêtes. Afin d'éviter cette situation, vous devez utiliser des colonnes d'index appropriées dans la requête. 2. Les types de données ne correspondent pas. Lors de la conception de la structure de la table, vous devez vous assurer que les colonnes d'index correspondent. types de données de la requête ; 3. , Utilisation inappropriée de l'index de préfixe, vous pouvez utiliser l'index de préfixe.

Quand une analyse de table complète pourrait-elle être plus rapide que d'utiliser un index dans MySQL? Quand une analyse de table complète pourrait-elle être plus rapide que d'utiliser un index dans MySQL? Apr 09, 2025 am 12:05 AM

La numérisation complète de la table peut être plus rapide dans MySQL que l'utilisation d'index. Les cas spécifiques comprennent: 1) le volume de données est petit; 2) Lorsque la requête renvoie une grande quantité de données; 3) Lorsque la colonne d'index n'est pas très sélective; 4) Lorsque la requête complexe. En analysant les plans de requête, en optimisant les index, en évitant le sur-index et en maintenant régulièrement des tables, vous pouvez faire les meilleurs choix dans les applications pratiques.

Quelles sont les classifications des index MySQL ? Quelles sont les classifications des index MySQL ? Apr 22, 2024 pm 07:12 PM

Les index MySQL sont divisés dans les types suivants : 1. Index ordinaire : correspond à la valeur, à la plage ou au préfixe ; 2. Index unique : garantit que la valeur est unique 3. Index de clé primaire : index unique de la colonne de clé primaire ; index clé : pointe vers la clé primaire d'une autre table ; 5. Index en texte intégral : recherche en texte intégral ; 6. Index de hachage : recherche par correspondance égale 7. Index spatial : recherche géospatiale 8. Index composite : recherche basée sur plusieurs ; Colonnes.

Règles de correspondance du préfixe gauche de l'index MySQL Règles de correspondance du préfixe gauche de l'index MySQL Feb 24, 2024 am 10:42 AM

Principe de l'indexation MySQL le plus à gauche et exemples de code Dans MySQL, l'indexation est l'un des moyens importants pour améliorer l'efficacité des requêtes. Parmi eux, le principe de l'index le plus à gauche est un principe important que nous devons suivre lors de l'utilisation des index pour optimiser les requêtes. Cet article présentera le principe du principe le plus à gauche de l'index MySQL et donnera quelques exemples de code spécifiques. 1. Principe du principe de l'index le plus à gauche Le principe de l'index le plus à gauche signifie que dans un index, si la condition de requête est composée de plusieurs colonnes, alors seule la requête basée sur la colonne la plus à gauche de l'index peut satisfaire pleinement les conditions de requête.

Expliquez différents types d'index MySQL (B-Tree, hachage, texte intégral, spatial). Expliquez différents types d'index MySQL (B-Tree, hachage, texte intégral, spatial). Apr 02, 2025 pm 07:05 PM

MySQL prend en charge quatre types d'index: B-Tree, hachage, texte intégral et spatial. 1. L'indice de tree B est adapté à la recherche de valeur égale, à la requête de plage et au tri. 2. L'indice de hachage convient aux recherches de valeur égale, mais ne prend pas en charge la requête et le tri des plages. 3. L'index de texte complet est utilisé pour la recherche en texte intégral et convient pour le traitement de grandes quantités de données de texte. 4. L'indice spatial est utilisé pour la requête de données géospatiaux et convient aux applications SIG.

Comment utiliser les index MySQL de manière rationnelle et optimiser les performances des bases de données ? Concevez des protocoles que les étudiants techniques doivent connaître ! Comment utiliser les index MySQL de manière rationnelle et optimiser les performances des bases de données ? Concevez des protocoles que les étudiants techniques doivent connaître ! Sep 10, 2023 pm 03:16 PM

Comment utiliser les index MySQL de manière rationnelle et optimiser les performances des bases de données ? Concevez des protocoles que les étudiants techniques doivent connaître ! Introduction : À l'ère d'Internet d'aujourd'hui, la quantité de données continue de croître et l'optimisation des performances des bases de données est devenue un sujet très important. MySQL étant l’une des bases de données relationnelles les plus populaires, l’utilisation rationnelle des index est cruciale pour améliorer les performances des bases de données. Cet article explique comment utiliser les index MySQL de manière rationnelle, optimise les performances de la base de données et fournit quelques règles de conception aux étudiants en technique. 1. Pourquoi utiliser des index ? Un index est une structure de données qui utilise

Stratégies d'optimisation des performances pour la mise à jour des données et la maintenance des index PHP et MySQL et leur impact sur les performances Stratégies d'optimisation des performances pour la mise à jour des données et la maintenance des index PHP et MySQL et leur impact sur les performances Oct 15, 2023 pm 12:15 PM

Stratégies d'optimisation des performances pour la mise à jour des données et la maintenance des index PHP et MySQL et leur impact sur les performances Résumé : Dans le développement de PHP et MySQL, les index sont un outil important pour optimiser les performances des requêtes de base de données. Cet article présentera les principes de base et l'utilisation des index, et explorera l'impact des index sur les performances sur la mise à jour et la maintenance des données. Parallèlement, cet article fournit également des stratégies d'optimisation des performances et des exemples de code spécifiques pour aider les développeurs à mieux comprendre et appliquer les index. Principes de base et utilisation des index Dans MySQL, un index est un nombre spécial

See all articles