2010-10-31 3 views
6

J'ai lu en ligne depuis un moment que l'utilisation d'index accélère vraiment les requêtes de votre base de données.Que sont les index dans un contexte de base de données?

Ma question est qu'est-ce que les index? Pourquoi accélèrent-ils les requêtes?

+1

http://en.wikipedia.org/wiki/Index_(database) - informations plutôt approfondies – Kel

+0

Mon point de vue sur les index ou les index est qu'ils sont utilisés pour localiser facilement des données dans la base de données et permettent de commander les données. –

Répondre

5

En termes simples, il fournit un moyen de trouver des données efficacement. En prenant un annuaire téléphonique, c'est toujours «nom, prénom» afin que vous puissiez rechercher quelqu'un. Imaginez si la compagnie de téléphone vient d'ajouter de nouveaux numéros à la fin de la liste sans aucune commande: vous devrez scanner des millions d'entrées une par une pour trouver "Smith, John".

Eh bien, la même chose s'applique à une table de base de données. Une table sans index (simplement) s'appelle un "tas": parce que vos données sont littéralement une pile de données non ordonnées. Si j'ai un million de lignes, je dois regarder à travers chaque ligne pour trouver ce que je veux.

Bien sûr, c'est plus complexe que cela mais j'espère que cela capture l'essentiel.

de même partout: les noms de rues dans un guide AZ sont toujours alphabétique, les entrées sur votre relevé bancaire sont toujours la date pour

+0

Cela signifie donc que si j'ajoute un index à une colonne "Nom" dans la table "Personne", cela signifie que les enregistrements de cette table seront classés par la colonne "Nom"? Que se passerait-il si deux colonnes de la même table avaient des index? –

+0

@Sergio Tapia: Chaque index est ordonné de façon logique pour permettre de trouver les valeurs. C'est ainsi que vous avez plusieurs index: chacun est logiquement ordonné séparément de vos données réelles. Cela ignore les index clusterisés et non clusterisés qui sont des implémentations physiques. Il suffit de considérer chaque index logiquement ordonné pour plus de simplicité. Une table n'est pas un annuaire téléphonique imprimé par exemple, c'est une structure sur disque qui n'est pas vraiment lisible par l'homme ... d'où le bit "logique" que j'ai mentionné – gbn

1

Un index est une copie de (une partie de) une table, qui devient plus petite à conserver en mémoire que la table entière, accélérant ainsi les opérations de lecture.

1

Les index sont une chose complexe, certains points de balle:

  • Index , tout comme dans un livre, créez un pointeur sur les données.
  • Les index ont besoin d'être conservés, ils se fragmentent avec le temps.
  • tête aux CREER et mise à jour déclarations que l'indice doit être mis à jour lorsque les données change
  • Principalement utilisé pour accélérer la récupération des données

Il existe différents types d'indices, et sont très spécifique à chaque mise en œuvre. Fondamentalement, il n'y a pas de science exacte pour créer des index, et ils sont cruciaux pour une application.

IMO, l'un des meilleurs articles sur l'index débutant, en fait un ensemble d'articles. Il nécessite un compte, mais gratuit et une grande ressource d'information SQL.

1

Avez-vous déjà recherché le contenu d'un livre en utilisant son index? Vous voyez normalement la page d'index pour voir le chapitre dont vous avez besoin est présent sur la page et ensuite passer directement à cette page, au lieu de parcourir toutes les pages. Ceci est très similaire au fonctionnement des index sur la table - en fonction de la ou des colonnes sur lesquelles la requête filtre, l'index de cette ou ces colonnes est analysé, ce qui donne l'emplacement des lignes correspondantes dans la mémoire physique réelle . C'est beaucoup plus rapide que de chercher toutes les lignes individuellement. De plus, les index sont normalement ordonnés (alors que les lignes elles-mêmes ne le sont pas), ce qui permet d'appliquer de meilleurs algorithmes de recherche comme le balayage de recherche binaire.

Questions connexes