Comment travailler avec des index SQL

La spécification SQL ne traite pas le sujet d'index, mais cette omission ne signifie pas que les index sont parties rares ou même en option d'un système de base de données. Chaque implémentation SQL supporte les index, mais vous ne trouverez pas d'accord universel sur la façon de les soutenir.

Qu'est-ce qu'un indice?

Les index peuvent être un grand gain de temps. Un index est une table ou un support auxiliaire qui va de pair avec une table de données. Pour chaque ligne de la table de données, vous avez une ligne correspondante dans la table d'index. L'ordre des lignes dans la table d'index est différent.

L'index contient le champ qui forme la base de l'indice (dans ce cas, ClientName) et un pointeur dans le tableau de données. Le pointeur dans chaque ligne d'index indique le numéro de ligne de la ligne correspondante dans la table de données.

Pourquoi devriez-vous voulez un indice

Si vous voulez traiter une table pour ClientName, et vous avez un indice arrangé pour ClientName, vous pouvez effectuer votre opération presque aussi vite que vous pourriez, si la table de données elles-mêmes étaient déjà dans l'ordre ClientName. Vous pouvez travailler dans l'index, se déplaçant immédiatement à l'enregistrement de données correspondant de chaque ligne d'index en utilisant le pointeur dans l'index.

Si vous utilisez un index, le temps de traitement de la table est proportionnelle à N, où N est le nombre d'enregistrements dans le tableau. Sans un indice, le temps de traitement pour la même opération est proportionnelle à nlogn, où N est le lg logarithme de N à la base 2. Pour les grandes tables, la différence est grande. Certaines opérations ne sont pas pratiques à réaliser sans l'aide d'indices.

Supposons que vous avez une table contenant des enregistrements 1.000.000 (N = 1,000,000), et le traitement de chaque enregistrement prend une milliseconde (un millième de seconde). Si vous avez un index, le traitement de la table entière ne prend que 1000 secondes - moins de 17 minutes.

Sans un index, vous devez passer par la table environ 1.000.000 x 20 fois pour obtenir le même résultat. Ce processus prendrait 20.000 secondes - plus de cinq heures et demie. La différence entre 17 minutes et cinq heures et demi est importante.

Comment maintenir un indice

Après avoir créé un index, vous devez maintenir. Heureusement, votre SGBD maintient vos index automatiquement pour vous, en les mettre à jour chaque fois que vous mettez à jour les tableaux de données correspondantes. Ce processus prend du temps, mais ça vaut le coup. Lorsque vous créez un index et votre SGBD maintient, l'index est toujours disponible pour accélérer le traitement de vos données, peu importe combien de fois vous avez besoin de faire appel à elle.

Ne pas tomber dans le piège de la création d'un index pour les commandes de récupération que vous avez peu de chance d'utiliser. l'entretien d'index est une opération supplémentaire que l'ordinateur doit exécuter chaque fois qu'il modifie le champ d'index ou ajoute ou supprime une ligne de tableau de données - et cette opération affecte les performances. Créer uniquement les index que vous prévoyez d'utiliser des clés comme récupération - et seulement pour les tables contenant un grand nombre de lignes.

Articles Liés