515 votes

Qu'est-ce qu'un index en SQL?

Qu'est-ce qu'un index en SQL? Pouvez-vous expliquer ou faire référence à comprendre clairement?

Où devrais-je utiliser un index?

439voto

Emil Vikström Points 42251

Un index est utilisé pour accélérer la recherche dans la base de données. MySQL a une bonne documentation sur le sujet (qui est pertinent pour les autres serveurs SQL en tant que bien): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Un index peut être utilisé efficacement trouver toutes les lignes qui correspondent à certains de colonne dans votre requête, puis marcher à travers seul qui sous-ensemble de la table pour trouver des correspondances exactes. Si vous n'avez pas d'indices sur n'importe quelle colonne dans l' WHERE clause, l' SQL serveur avoir à marcher à travers l'ensemble du tableau et vérifier chaque ligne pour voir si elle correspond à, ce qui peut être une opération lente sur de grandes tables.

L'index peut aussi être un UNIQUE de l'indice, ce qui signifie que vous ne pouvez pas avoir de doublons dans cette colonne, ou un PRIMARY KEY qui, dans certains moteurs de stockage définit l'emplacement du fichier de base de données la valeur est stockée.

Dans MySQL, vous pouvez utiliser EXPLAIN devant votre SELECT déclaration de voir si votre requête s'utiliser à n'importe quel indice. C'est un bon début pour la résolution des problèmes de performances. Lire la suite ici: http://dev.mysql.com/doc/refman/5.0/en/explain.html

189voto

Dave Hilditch Points 1248

Un index cluster est comme le contenu d'un répertoire. Vous pouvez ouvrir le livre à la 'encore hilditch, David", et de trouver toutes les informations de toutes les " encore hilditch est juste à côté les uns des autres. Ici les clés de l'index cluster (nom, prénom).

Cela rend les index en cluster idéal pour récupérer beaucoup de données en fonction de la portée en fonction des requêtes puisque toutes les données sont situées les unes à côté des autres.

Depuis l'index cluster est en fait lié à la façon dont les données sont stockées, il est seulement l'un d'eux possible par table (bien que vous pouvez tricher pour simuler plusieurs index en cluster).

Un index non-cluster est différent dans le sens que vous pouvez avoir beaucoup d'entre eux et ils ont ensuite le point sur les données de l'index cluster. Vous pourriez avoir par exemple un index non-cluster à l'arrière de l'annuaire, qui est entré sur (ville, adresse)

Imaginez si vous aviez à les rechercher dans l'annuaire téléphonique pour toutes les personnes qui vivent dans "Londres" - avec seulement l'index cluster, vous devez rechercher tous les articles dans le livre de téléphone depuis la clé sur l'index cluster est sur (nom, prénom) et en conséquence, les personnes qui vivent à Londres sont dispersées de façon aléatoire tout au long de l'index.

Si vous avez un index non-cluster (ville), alors ces requêtes peuvent être effectués beaucoup plus rapidement.

Espérons que ça aide!

144voto

Arun Kumar M Points 498

Une très bonne analogie est de penser à un index de base de données comme un index dans un livre. Si vous avez un livre concernant les pays et vous êtes à la recherche pour l'Inde, alors, pourquoi voulez-vous feuilletez l'intégralité du livre – qui est l'équivalent d'un plein balayage de table dans la base de données de terminologie – quand vous pouvez simplement aller à l'index au dos du livre, qui vous dira les pages où vous pouvez trouver des informations sur l'Inde. De même, comme l'index d'un livre contient un numéro de page, un index de base de données contient un pointeur vers la ligne contenant la valeur que vous recherchez dans votre SQL.

Plus Ici

87voto

Mitch Wheat Points 169614

Un index est utilisé pour accélérer les performances des requêtes. Il le fait en réduisant le nombre de données de base de données les pages qui doivent être visités ou numérisé.

Dans SQL Server, un cluster index détermine l'ordre physique des données dans une table. Il peut y avoir qu'un index cluster par table (l'index cluster EST la table). Tous les autres index sur une table sont appelés non-cluster.

63voto

Suresh Points 139

Les index sont tout au sujet de trouver rapidement les données. Index dans une base de données sont analogues aux indices que vous trouverez dans un livre. Si un livre a un indice, et je vous demande de trouver un chapitre dans le livre, vous pouvez rapidement trouver que, avec l'aide de l'index. D'autre part, si le livre n'est pas un index, vous devez passer plus de temps, à la recherche pour le chapitre, en regardant chaque page du début à la fin du livre. De manière similaire, les index dans une base de données peut aider les requêtes pour rechercher rapidement des données. Si vous êtes nouveau à l'index, les vidéos suivantes, peut être très utile. Enfait, j'ai beaucoup appris d'eux.

Index Des Notions De Base
Cluster et les Index Non Cluster
Unique et Non-Index Uniques
Les avantages et les inconvénients de l'index

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X