|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Bonjour,
Tout est dans le titre. J'utilise généralement un éditeur wysiwyg (windesign) pour créer mes bases de données Mysql. Jusqu'à présent je ne me suis jamais soucié et je crois que mes indexes sont placés sur les clés primaires. Mais comment choisir un index et à quoi ça va me servir ? Merci |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
tu peux commencer par creer des index sur les clef etrangeres pour les jointures. un index peut diminuer le temps d'execution d'une requete.
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Par défaut j'en ai sur les clés (primaires et étrangères). Par contre, lorsque je fais des jointures je récupére toujours les mêmes champs (en général un champ [nom] d'une table liée. Est-ce qu'il est préférable de mettre un index aussi sur les champs des jointures ?
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Oui !
Il est pertinent d'indexer les champs qui participent aux clauses WHERE aussi.
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Merci de répondre à ses questions basiques, et j'en pose encore une afin de mettre mes indexes.
J'imagine qu'il ne faut pas abuser des indexes, mais comment voir si je n'en abuse pas. Sur une table à >10 champs, j'en met 4 ? Sur une table à <5 champs j'en met 3 ? Si j'en met trop, que va t'il se passer et comment m'en rendre compte ? Peut-être qu'il faudrait que je comprenne comment le SGBDR interprete les indexes. Est-ce que tous les sgbdr traitent les indexes de la même façon ? Est-ce que vous avez une doc à ce sujet ? Quel est le gain de réponse si j'utilise bien les indexes ? Merci de vos réponses. |
|
|
00
|
|
|
#6 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 455 ![]() |
Un index va être couteux en volume et en temps de mise à jour / insertion.
En contrepartie, il améliorera les temps de réponse sur les jointures, les tris, les sélections et les regroupements. Il faut peser les avantages et les inconvénients.
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() ![]() |
Citation:
Il faut savoir que l'utilisation d'index entraine un accroissement de la taille de la base... je n'ai pas les chiffres exactes mais un tier à un demi sont les coefficient d'augmentation d'une base lorsqu'elle est bien indexée... inutile d'indexer un base de moins de 1 giga, de quelques milliers d'enregistrements mais si votre base fait plusieurs giga, et que vous comptez vos enregistrement en millions, l'indexation devient indispensable... L'indexation ne fait pas tout en terme d'optimisation et vous devez penser à normaliser correctement votre base et à choisir un serveur correctement architecturé... L'indexation, c'est ce que j'ai trouvé de plus passionnant dans l'approche DBA. C'est complètement independant des requetes et cela diminue drastiquement les temps de reponses de celle ci. |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Je vous remercie pour vos réponses, car j'ai enfin compris en un post, ce que je cherchais depuis longtemps.
Je sais qu'il existe plein de tuto mais peut-être avez vous un précis concernant la création d'indexes pour MySQL. Je met le TAG résolu, car vous avez répondu (merci) à ce post. |
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 098 ![]() |
Citation:
Mais pas du tout ! C'est justement l'analyse des requêtes et des prédicats associés qui va permetre de choisir les bons index ... A la limite, et à part pour les clés primaires et les clés étrangères, si il n'y a pas de requêtes, il n'y a pas besoin d'index ... |
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() |
ce que je voulais dire ce que l'on pouvait ajouter et retirer un index, sans toucher à la requete! c'est genial...
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : septembre 2007 Messages : 357 ![]() |
Pour le moment, j'ai mis des indexs sur tous mes champs utilisés pour une requête. Je ne verrai pas de changement sur les temps d'éxécution maintenant car il s'agit d'une nouvelle application et la base de données est quasi vide. Chacune de mes classes implémentant une table (l'ORM) a une requête retournant les informations nécessaires pour remplir les liste <select>. J'ai mis mes indexes sur ces champs.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com