Table des matières
Un test de comparaison simple
Le concept de MySQL index
Types d'index MySQL
Maison base de données tutoriel mysql Résumé des index MySQL – introduction détaillée aux types d'index MySQL et à leur création

Résumé des index MySQL – introduction détaillée aux types d'index MySQL et à leur création

Mar 04, 2017 pm 03:04 PM

Concernant les avantages des index MySQL, 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. Pour les tables sans index, une seule requête de table peut contenir des centaines de milliers de données, ce qui constitue le goulot d'étranglement. Généralement, les grands sites Web peuvent générer des centaines de milliers, voire des millions de données en une seule journée, et les requêtes sans index deviendront très lentes. En prenant WordPress comme exemple, bon nombre de ses tables de données ajouteront des index aux champs fréquemment interrogés. Par exemple, la table wp_comments a un index BTREE conçu pour 5 champs.

Un test de comparaison simple

Prenons comme exemple simple les données que j'ai testées l'année dernière. Plus de 20 sources de données ont généré aléatoirement 2 millions de données. En moyenne, chaque source de données contient environ 100 000. répétitions. Deuxièmement, la structure de la table est relativement simple, contenant uniquement un identifiant à incrémentation automatique, un type char, un type texte et un type int. La table unique a une taille de 2 Go et utilise le moteur MyIASM. Démarrage du test sans ajouter d'index.

Exécutez l'instruction SQL suivante :

mysql> SELECT id,FROM_UNIXTIME(time) FROM article WHERE a.title='测试标题'
Copier après la connexion

Le temps requis pour la requête est très effrayant. Si vous ajoutez des requêtes conjointes et d'autres contraintes, la base de données disparaîtra. fou. Consomme de la mémoire et affecte l'exécution des programmes frontaux. À ce stade, ajoutez un index BTREE au champ de titre :

mysql> ALTER TABLE article ADD INDEX index_article_title ON title(200);
Copier après la connexion

Exécutez à nouveau l'instruction de requête ci-dessus, et le contraste est très évident :

Le concept de MySQL index

Les index sont des fichiers spéciaux (les index de la table de données InnoDB sont un composant de l'espace table. Ils contiennent des pointeurs de référence vers tous les enregistrements de la table de données). Pour le dire plus généralement, un index de base de données est comme la table des matières au début d'un livre, ce qui peut accélérer les requêtes dans la base de données. Dans l'instruction SQL ci-dessus, s'il n'y a pas d'index, la base de données parcourra les 200 éléments de données et sélectionnera celles qui remplissent les conditions avec l'index correspondant, la base de données recherchera directement les options qui remplissent les conditions dans l'index ; . Si nous modifions l'instruction SQL en "SELECT * FROM article WHERE id=2000000", voulez-vous que la base de données vous donne les résultats après avoir lu 2 millions de lignes de données en séquence, ou qu'elle les localise directement dans l'index ? La comparaison temporelle claire entre les deux images ci-dessus donne déjà la réponse (Remarque : généralement, les bases de données génèrent par défaut des index pour la clé primaire).

Les index sont divisés en index clusterisés et index clusterisés. Les index clusterisés sont classés en fonction de l'emplacement physique du stockage des données, mais les index clusterisés sont différents. La vitesse de récupération des lignes, tandis que l'index non clusterisé est rapide pour la récupération d'une seule ligne.

Types d'index MySQL

1. Index ordinaire

Il s'agit de l'index le plus basique. Par exemple, l'index créé pour le champ de titre ci-dessus est. un index ordinaire, l'index de type BTREE par défaut dans MyIASM, est également l'index que nous utilisons dans la plupart des cas.

01    –直接创建索引    
02    CREATE INDEX index_name ON table(column(length))    
03    –修改表结构的方式添加索引    
04    ALTER TABLE table_name ADD INDEX index_name ON (column(length))    
05    –创建表的时候同时创建索引    
06    CREATE TABLE `table` (    
07    `id` int(11) NOT NULL AUTO_INCREMENT ,    
08    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,    
09    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,    
10    `time` int(10) NULL DEFAULT NULL ,    
11    PRIMARY KEY (`id`),    
12    INDEX index_name (title(length))    
13    )    
14    –删除索引    
15    DROP INDEX index_name ON table
Copier après la connexion

2. L'index unique

est similaire à un index normal, sauf que la valeur de la colonne d'index doit être unique, mais des valeurs nulles. ​​sont autorisés (notez qu'elle est différente de la clé primaire). S'il s'agit d'un index combiné, la combinaison des valeurs des colonnes doit être unique et la méthode de création est similaire à celle d'un index normal.

01    –创建唯一索引    
02    CREATE UNIQUE INDEX indexName ON table(column(length))    
03    –修改表结构    
04    ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))    
05    –创建表的时候直接指定    
06    CREATE TABLE `table` (    
07    `id` int(11) NOT NULL AUTO_INCREMENT ,    
08    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,    
09    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,    
10    `time` int(10) NULL DEFAULT NULL ,    
11    PRIMARY KEY (`id`),    
12    UNIQUE indexName (title(length))    
13    );
Copier après la connexion


3. Index en texte intégral (FULLTEXT)

MySQL prend en charge l'index en texte intégral et la recherche en texte intégral à partir de la version 3.23. .23, index FULLTEXT Disponible uniquement pour les tables MyISAM ; elles peuvent être créées à partir de colonnes CHAR, VARCHAR ou TEXT dans le cadre d'une instruction CREATE TABLE, ou ajoutées ultérieurement à l'aide de ALTER TABLE ou CREATE INDEX. ////Pour des ensembles de données plus volumineux, saisir vos données dans une table sans index FULLTEXT, puis créer l'index est plus rapide que de saisir les données dans un index FULLTEXT existant. Toutefois, n'oubliez pas que pour les tables de données de grande capacité, la génération d'index de texte intégral est un processus très long et gourmand en espace disque.

01    –创建表的适合添加全文索引    
02    CREATE TABLE `table` (    
03    `id` int(11) NOT NULL AUTO_INCREMENT ,    
04    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,    
05    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,    
06    `time` int(10) NULL DEFAULT NULL ,    
07    PRIMARY KEY (`id`),    
08    FULLTEXT (content)    
09    );    
10    –修改表结构添加全文索引    
11    ALTER TABLE article ADD FULLTEXT index_content(content)    
12    –直接创建索引    
13    CREATE FULLTEXT INDEX index_content ON article(content)
Copier après la connexion


4. Index à une seule colonne, index à plusieurs colonnes

L'effet de requête de plusieurs index à une seule colonne est différent de celui d'un seul index multi-colonnes, car lors de l'exécution d'une requête, MySQL ne peut utiliser qu'un seul index et sélectionnera l'index le plus restrictif parmi plusieurs index.

5. Index composite (préfixe le plus à gauche)

Les instructions de requête SQL habituellement utilisées ont généralement plus de restrictions, donc afin d'extraire davantage l'efficacité de MySQL, il est nécessaire d'envisager d'établir un index composite . Par exemple, dans le tableau ci-dessus, un index combiné est créé pour le titre et l'heure : ALTER TABLE article ADD INDEX index_titme_time (title(50), time(10)). Établir un tel index combiné équivaut en fait à établir les deux ensembles d'index combinés suivants :

–titre, heure

–titre

Pourquoi n'y a-t-il pas d'index combiné comme l'heure ? Du drap de laine ? 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 deux colonnes utiliseront l'index combiné, comme indiqué dans les SQL suivants :

1    –使用到上面的索引    
2    SELECT * FROM article WHREE title='测试' AND time=1234567890;    
3    SELECT * FROM article WHREE utitle='测试';    
4    –不使用上面的索引    
5    SELECT * FROM article WHREE time=1234567890;
Copier après la connexion

Ce qui précède est un résumé des index mysql - une introduction détaillée aux types d'index mysql et à la création de contenu, s'il vous plaît faites attention au site Web PHP chinois (www.php.cn) pour plus de contenu connexe !

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Comment ouvrir phpmyadmin Comment ouvrir phpmyadmin Apr 10, 2025 pm 10:51 PM

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

MySQL: une introduction à la base de données la plus populaire au monde MySQL: une introduction à la base de données la plus populaire au monde Apr 12, 2025 am 12:18 AM

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

Comment utiliser un seul fileté redis Comment utiliser un seul fileté redis Apr 10, 2025 pm 07:12 PM

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.

Place de MySQL: bases de données et programmation Place de MySQL: bases de données et programmation Apr 13, 2025 am 12:18 AM

La position de MySQL dans les bases de données et la programmation est très importante. Il s'agit d'un système de gestion de base de données relationnel open source qui est largement utilisé dans divers scénarios d'application. 1) MySQL fournit des fonctions efficaces de stockage de données, d'organisation et de récupération, en prenant en charge les systèmes Web, mobiles et de niveau d'entreprise. 2) Il utilise une architecture client-serveur, prend en charge plusieurs moteurs de stockage et optimisation d'index. 3) Les usages de base incluent la création de tables et l'insertion de données, et les usages avancés impliquent des jointures multiples et des requêtes complexes. 4) Des questions fréquemment posées telles que les erreurs de syntaxe SQL et les problèmes de performances peuvent être déboguées via la commande Explication et le journal de requête lente. 5) Les méthodes d'optimisation des performances comprennent l'utilisation rationnelle des indices, la requête optimisée et l'utilisation des caches. Les meilleures pratiques incluent l'utilisation des transactions et des acteurs préparés

Pourquoi utiliser MySQL? Avantages et avantages Pourquoi utiliser MySQL? Avantages et avantages Apr 12, 2025 am 12:17 AM

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.

Comment se connecter à la base de données d'Apache Comment se connecter à la base de données d'Apache Apr 13, 2025 pm 01:03 PM

Apache se connecte à une base de données nécessite les étapes suivantes: Installez le pilote de base de données. Configurez le fichier web.xml pour créer un pool de connexion. Créez une source de données JDBC et spécifiez les paramètres de connexion. Utilisez l'API JDBC pour accéder à la base de données à partir du code Java, y compris l'obtention de connexions, la création d'instructions, les paramètres de liaison, l'exécution de requêtes ou de mises à jour et de traitement des résultats.

Comment démarrer MySQL par Docker Comment démarrer MySQL par Docker Apr 15, 2025 pm 12:09 PM

Le processus de démarrage de MySQL dans Docker se compose des étapes suivantes: Tirez l'image MySQL pour créer et démarrer le conteneur, définir le mot de passe de l'utilisateur racine et mapper la connexion de vérification du port Créez la base de données et l'utilisateur accorde toutes les autorisations sur la base de données

CentOS installe MySQL CentOS installe MySQL Apr 14, 2025 pm 08:09 PM

L'installation de MySQL sur CENTOS implique les étapes suivantes: Ajout de la source MySQL YUM appropriée. Exécutez la commande YUM Install MySQL-Server pour installer le serveur MySQL. Utilisez la commande mysql_secure_installation pour créer des paramètres de sécurité, tels que la définition du mot de passe de l'utilisateur racine. Personnalisez le fichier de configuration MySQL selon les besoins. Écoutez les paramètres MySQL et optimisez les bases de données pour les performances.

See all articles