English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本教程中,您将学习如何在表上创建索引以提高数据库性能。
索引是与表相关联的数据结构,它基于一个或多个列(索引键)中的值提供对表中行的快速访问。
假设您的数据库中有一个customers假设您的数据库中有一个表,并且您想使用以下语句找出名字是以字母A开头的所有客户。
SELECT cust_id, cust_name, address FROM customers WHERE cust_name LIKE 'A%';
Pour trouver de tels clients, le serveur doit êtrecustomersTableau de balayage ligne par ligne et vérification du contenu de la colonne nom. Bien que cela fonctionne normalement pour des tables avec très peu de lignes, imaginez que la table contienne un million de lignes. Dans ce cas, vous pouvez accélérer le traitement en appliquant un index à la table.
Vous pouvez créer un index en utilisant la clause CREATE INDEX suivante :
CREATE INDEX index_name ON table_name (column_name);
Par exemple, pour créer un index sur la colonne nom dans la tablenamePour créer un index sur une colonne, vous pouvez utiliser :
CREATE INDEX cust_name_idx ON customers (cust_name);
Par défaut, l'index permet des entrées répétées et trie les entrées en ordre croissant. Pour exiger des entrées uniques de l'index, ajoutez le mot-clé UNIQUE après CREATE, comme suit :
CREATE UNIQUE INDEX cust_name_idx ON customers (cust_name);
Dans MySQL, vous pouvez voir les index disponibles sur une table spécifique, comme suit :
mysql> SHOW INDEXES FROM customers \G
Conseil :Remplacez le point-virgule (;) par \G pour terminer l'instruction SQL. Si les résultats sont trop larges pour la fenêtre actuelle, les résultats s'affichent verticalement au lieu du format de tableau conventionnel.
Vous pouvez également créer des index sur plusieurs colonnes. Par exemple, supposons que vous ayez déjà nommé une table dans votre base de données的用户具有列first_nameetlast_nameEt si vous accédez souvent à ces colonnes, vous pouvez créer un index sur deux colonnes ensemble pour améliorer les performances des enregistrements des utilisateurs, comme le montre le graphique suivant :
CREATE INDEX user_name_idx ON users (first_name, last_name);
Conseil :Vous pouvez envisager l'index de la base de données comme la partie index d'un livre, pour vous aider à trouver ou localiser rapidement un sujet spécifique dans le livre.
Les index doivent être créés avec prudence. Car chaque fois que vous ajoutez, mettez à jour ou supprimez une ligne dans la table, vous devez modifier tous les index de cette table. Par conséquent, plus vous avez d'index, plus le serveur a de travail à faire, ce qui peut finalement entraîner une réduction des performances.
Voici quelques principes de base à suivre lors de la création d'index :
Créez des index pour les colonnes que vous utilisez souvent pour rechercher des données.
Ne créez pas d'index pour les colonnes jamais utilisées comme clé de recherche.
Colonnes d'index utilisées pour améliorer les performances de la jointure.
Évitez d'inclure trop de valeurs NULL dans les colonnes.
De même, la petite table n'a pas besoin d'index, car dans le cas de la petite table, la lecture de la table par le serveur est généralement plus rapide que de consulter l'index.
Attention :Lors de la création de table, la plupart des systèmes de bases de données (comme MySQL, SQL Server, etc.) créent automatiquement des indices pour les tablesPRIMARY KEYetUNIQUECréation d'index sur les colonnes.
Vous pouvez utiliser la phrase suivante pour supprimer les indices devenus inutiles.
DROP INDEX index_name ON table_name;
La phrase suivante supprimeracustomersSuppression d'index de tablecust_name_idx。
DROP INDEX cust_name_idx ON customers;
De plus, siSuppression de table :Alors, toutes les indices associées seront également supprimées.
Avertissement :Attention : avant de supprimer un index, vous devriez vérifier les effets qu'il peut causer. En règle générale, ne créez ou ne supprimez pas des indices de manière aveugle.