Fil d’Ariane du forum – Vous êtes ici :ForumForums techniques: AS/400création index
Vous devez vous identifier pour créer des messages et des sujets.

création index

Bonjour,

Je souhaite créer des index sur des tables SQL que nous venons de créer.

Imaginons :

- une table constituée des champs : champs1, champs2, champs3...

- des requêtes qui font des sélections sur le champs1 ou sur les champs1 et champs2

Pour améliorer les temps de réponses nous voulons créer des index. Est-il pertinent de créer un index sur la colonne champs1 et un index sur les colonnes (champs1, champs2) ? Le deuxième index ne suffit-il pas pour être utiliser dans les 2 cas de requêtes ?

Merci

Oui, car l'index sur (champ1, champ2) est déjà un index sur champ1.

Bonjour,

Merci de votre réponse.

Question complémentaire, un index sur champs1, champs2, champs3 est-il équivalent à un index sur chamsp3, champs1, champs2 ? (là je me dis que le nombre d'enregistrements concernés par chaque champs peut rentre en compte)

 

Merci d'avance

Non, c'est l'ordre des champs qui compte : ainsi un index (champ1, champ2, champ3) donne aussi un index (champ1, champ2) et un index (champ1), mais pas un index (champ2, champ3, champ1) ou (champ3, champ2) par exemple.

Noter que ce n'est toutefois pas équivalent : selon que l'on va lire la table avec une clé d'accès d'un, deux ou trois champs, il n'y a pas de raison pour que l'ordre d'accès aux enregistrements soit le même.

Sauf à mettre un ORDER BY dans la requête, le moteur SQL optimise les requêtes pour privilégier les index existants.

Utiliser Visual Explain donne de bonnes informations sur les index utilisés et ceux qui sont recommandés de créer.