Bonjour tout le monde.
Une question que je me pose depuis longtemps.
Considérons une table avec un id comme clé primaire en auto incrémente et 3 champs : champ1 et champ2 (VARCHAR on va dire) et date (type date).
1) Si je souhaite faire un select, qu'est-ce qui est le plus rapide
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * from table where id = '65'
en supposant que les champs contiennent "sdfsdf" et "fghfghfg"
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * from table where id = '65' AND champ1 = 'sdfsdf' AND champ2 = 'fghfghfg'
2) Autre chose
Maintenant je fais ceci :
Comment mysql va optimiser cela, va-t-il d'abord regarder s'il trouve l'id 65 puis faire le gros calcul ou bien faire plusieurs fois le gros calcul jusqu'a ce qu'il tombe sur l'id 65.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * from table where id = '65' AND 'tres gros calcul de conversion sur le champ date'
3) Dans le précédent cas, id était unique (car auto-incrémenté). Si ce n'était pas le cas genre on le retrouve une dizaine de fois dans une table de 100000 entrées mais que le champ est indexé, le calcul de date ne se ferait que sur les 10 lignes ramenées ou sur d'autre lignes pendant la recherche.
J'espère que vous avez compris ce que je souhaitais dire (mais non je ne vous prends pas pour des cons ). Je vous remercie.
Partager