Les Index dans mysql ?!
Bonsoir,
Voila j'ai entendu parler des index dans mysql , et j'ai lut un petit peu la doc de mysql mais j'ai pas trop saisi l'interet par rapport a d'autres methodes !
En fait bon les index sont la pour trier une colonne d'un champs, si j'ai bien compris, mais quel est avantage? des SELECT plus rapides ? ensuite la doc employer le terme de préfixes ?! kesako ! merci de vos explications ou meme d'un lien vers une bonne doc !
Ciao,
I am singing in the rain , I am happy again !!
le 02/05/2005 à 23:21
bibi
Les index sont présents pour accélérer les requetes . On les met en général sur les clés des jointures .
Par exemple
SELECT * FROM a,b WHERE a.cle = b.cle
ici, on créera un index sur a.cle et sur b.cle
voila :)
commit suicide
merci mais la je vois qu'une jointure ! mais les index on les ecrit pas dans les requetes SELECT ?! je comprends pas tout !
I am singing in the rain , I am happy again !!
Non, un index ne se met pas dans un SELECT.
L'index, il faut le créer sur un attribut Y d'une table X.
L'index permet d'accélérer certains types de requetes.
Exemple :
Ta table X contient 10 000 éléments, et l'attribut Y n'est pas une clé primaire.
Si tu places un index sur X.Y, tu vas créer un genre de "table des matières" de ta table (l'index).
Ensuite, quand tu vas faire une requete sql avec Y, MySQL va regarder cette table des matières (au lieu de regarder les 10 000 éléments).
Imaginons que Y soit un truc numérique.
Ta requete SQL cherche quelque chose telle que Y > 500 et Y < 800.
Imaginons aussi que l'index permette à MySQL de découper ta table X en "zone" :
- zone 1 : Y > 0 et Y < 500
- zone 2 : Y > 500 et Y < 1000
etc...
Bref lors de la requete SQL, ton MySQL va checker l'index :
- il va lire la zone 1 (un accés BD)
- il va lire la zone 2 (un accés BD) : la, il sait qu'il est dans la bonne zone pour ce que tu cherches
- il va lire les éléments de la zone 2
(si la zone 2 contient 250 éléments, MySQL aura fait 252 accés BD, au lieu de faire 10 000 accés BD).
Voila un peu en super simplifié la notion d'index : c'est une table des matieres de ta table.
C'est comme les tables des matieres des livres : tu sais que le chapitre 'toto' est à la page 42.
Si tu veux lire ce chapitre (qui t'interesse), ben tu vas à la page 42 au lieu de lire toutes les pages avant d'arriver au chapitre 'toto'.
Naturellement, un index "occupe" de la place sur le disque dur, et non, il n'est pas bon de mettre des index partout (cela peut meme ralentir le SGBD dans certains cas).
En fait il te faut mettre un index sur les champs qui te serviront dans les clauses de tes requêtes.
Trop d'index peuvent ralentir le moteur lors des recherches de même que les index sur des champs trop "volumineux".
Le but est de pouvoir optimiser tes tables et les modeliser en pensant à la manière dont tu vas les utiliser.
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
merci de vos reponses, oui effectivement on m'avait dit que trop d'index fesait effectivement un effet inverse !
I am singing in the rain , I am happy again !!
On peut indiquer dans un Select qu'on souhaite utiliser ou non tel et tel index.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: