création index
Citation de j j le 21 octobre 2019, 14 h 41 minBonjour,
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
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
Citation de remit le 22 octobre 2019, 13 h 20 minOui, car l'index sur (champ1, champ2) est déjà un index sur champ1.
Oui, car l'index sur (champ1, champ2) est déjà un index sur champ1.
Citation de j j le 22 octobre 2019, 14 h 26 minBonjour,
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
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
Citation de remit le 22 octobre 2019, 15 h 39 minNon, 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.
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.
Citation de macounet le 23 octobre 2019, 16 h 58 minSauf à 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.
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.