Base MySQL et Index
4 messages
• Page 1 sur 1
- MadMatt
- Nouveau WRInaute

- Messages: 17
- Inscription: 2 Sep 2007
Base MySQL et Index
Bonjour à tous,
J'ai quelques question concernant les Index dans une table SQL.
Est-il utile de les mettre sur des champs enum (Par exemple sur un champ "Actif" qui détermine si un compte utilisateur est actif ou non) ? Car je me demande si ça pourrait accélérer le listage des comptes Actifs, ou au contraire si pour un enum c'est pas conseillé.
De même, est-ce "grave" si une table comporte plus de 5 Index environ (si j'en met un peu à tout va) ?
Est-ce utile en gros de mettre un Index sur chaque colonne que je risque d'utiliser comme filtre lors d'une requete (une recherche dans la base de données par exemple) ?
Merci si vous avez des conseils
J'ai quelques question concernant les Index dans une table SQL.
Est-il utile de les mettre sur des champs enum (Par exemple sur un champ "Actif" qui détermine si un compte utilisateur est actif ou non) ? Car je me demande si ça pourrait accélérer le listage des comptes Actifs, ou au contraire si pour un enum c'est pas conseillé.
De même, est-ce "grave" si une table comporte plus de 5 Index environ (si j'en met un peu à tout va) ?
Est-ce utile en gros de mettre un Index sur chaque colonne que je risque d'utiliser comme filtre lors d'une requete (une recherche dans la base de données par exemple) ?
Merci si vous avez des conseils
-

auboutdufil - Nouveau WRInaute

- Messages: 21
- Inscription: 19 Mai 2006
Salut Madmatt,
Moins tu auras d'index plus ils seront performants.
Tu dois créer ton index sur le champ très fréquemment utilisé dans tes selects.
Le champ où tu veux placer ton index doit avoir une fréquence d'échantillonage élevé (idéalement un champ unique), donc ça sert à rien sur un champ enum qui déduction a une petite liste de valeur
Je suis pas DBA alors tout ce que je dis est à prendre au conditionnel
Moins tu auras d'index plus ils seront performants.
Tu dois créer ton index sur le champ très fréquemment utilisé dans tes selects.
Le champ où tu veux placer ton index doit avoir une fréquence d'échantillonage élevé (idéalement un champ unique), donc ça sert à rien sur un champ enum qui déduction a une petite liste de valeur
Je suis pas DBA alors tout ce que je dis est à prendre au conditionnel
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Base MySQL et Index
MadMatt a écrit:Est-il utile de les mettre sur des champs enum (Par exemple sur un champ "Actif" qui détermine si un compte utilisateur est actif ou non) ? Car je me demande si ça pourrait accélérer le listage des comptes Actifs, ou au contraire si pour un enum c'est pas conseillé.
Oui, ça peut effectivement être utile. Maintenant demande-toi exactement quelle est la requête qui va utiliser cet index, si cette requête est exécutée souvent, et si elle aurait besoin d'autres choses. Si la requête n'est pas exécutée souvent, tu peux probablement te passer de l'index. Si la requête liste (par exemple) les 10 derniers compte actifs, en plus de l'état actif/inactif, tu peux avoir intérêt à mettre la date (celle qui compte pour "10 derniers") dedans. Comme ça il n'a pas besoin de parcourir tout l'index pour trouver 10 lignes.
MadMatt a écrit:De même, est-ce "grave" si une table comporte plus de 5 Index environ (si j'en met un peu à tout va) ?
En lecture, un index ne gêne pas (ou très très peu, il faut juste décider s'il est utile de s'en servir ou pas). Par contre ça implique qu'à chaque écriture (insertion/mise à jour/supression) il va falloir mettre à jour tous ces index. Si tu écris très peu et lis beaucoup avec beaucoup de requêtes différentes qui ont besoin d'index différents, ajoute tous les index que tu veux. Si au contraire tu écris beaucoup, limite le nombre d'index.
MadMatt a écrit:Est-ce utile en gros de mettre un Index sur chaque colonne que je risque d'utiliser comme filtre lors d'une requete (une recherche dans la base de données par exemple) ?
A moins que tu ne permettes une recherche sur n'importe quel critère, il vaut mieux adapter chaque index aux requêtes spécifiques que tu peux faire, avec éventuellement plusieurs colonnes dans chaque index.
NB: je n'utilise jamais mysql mais uniquement postgresql, donc je ne suis pas 100% certain que mysql soit capable d'utiliser des index multi-colonnes dans tous les cas de figure, mais je suppose et j'espère qu'il sait le faire!
Jacques.
4 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Consultez la description détaillée des produits ou services de Google suivants : Google Base
- Suggestion de mots-clés Google
Cet outil vous permet d'obtenir une liste de 10 mots ou expressions suggérés par Google sur la base d'un mot que vous fournissez.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
