OVH Cloud OVH Cloud

Requête SQL et champs indexés

9 réponses
Avatar
Téo Path
Bonjour à tous

Je continue ma découverte des joies de php+mysql :-)

J'ai créé une Base de donnée et une table (en local), j'y ai adjoint plusieurs index dont
certains multi-champs.

Mais là je bloque, je ne trouve pas comment faire une requête qui requiert les index ?

Peut-on utiliser plusieurs index ou vaut il mieux prévoir un index multi-champs
spécifique à chaque requête ?

D'avance merci.

--
Teo Path
http://www.hourdeaux.fr.st

9 réponses

Avatar
Le Gaulois
Téo Path a écrit :

Je continue ma découverte des joies de php+mysql :-)



AMHA, ça serait nettement plus en charte dans
fr.comp.applications.sgbd
(Xpost + FU2 là-bas)

J'ai créé une Base de donnée et une table (en local), j'y ai
adjoint plusieurs index dont
certains multi-champs.

Mais là je bloque, je ne trouve pas comment faire une requête
qui requiert les index ?



Avec les SGBD modernes, on fait de requêtes SQL qui indiquent
ce qu'on souhaite obtenir et le SGBD se débrouille pour
trouver le meilleur plan d'exécution. On n'a donc pas besoin
de lui préciser d'utiliser tel index.

(Je ne sais pas à quel point MySQL est un SGBD "moderne")
Avatar
Pierre Goiffon
Téo Path wrote:
J'ai créé une Base de donnée et une table (en local), j'y ai adjoint
plusieurs index dont certains multi-champs.

Mais là je bloque, je ne trouve pas comment faire une requête qui
requiert les index ?

Peut-on utiliser plusieurs index ou vaut il mieux prévoir un index
multi-champs spécifique à chaque requête ?



Votre question concerne plutôt le côté SGBD, je pense que vous
obtiendrez plus de réponses sur fr.Comp.applications.sgbd par exemple...
ou mieux, un forum dédié à MySQL ! En effet, chaque SGBD a ses
particularités...
Avatar
bruno at modulix
Téo Path wrote:
Bonjour à tous

Je continue ma découverte des joies de php+mysql :-)

J'ai créé une Base de donnée et une table (en local), j'y ai adjoint
plusieurs index dont certains multi-champs.



Tes index sont-ils utiles ? Si un index n'est pas suffisament
discriminant, il risque d'être franchement contre-productif.
<tech>
plus il y a de valeurs distinctes pour un champ, plus un index sur ce
champs sera discriminant. Une clé unique est ce qu'on peut faire de
mieux (il n'y a que des valeurs distinctes, donc une entrée d'index
correspond à un seul enregistrement), un champs 'oui/non' ce qu'on peut
faire de pire (deux entrées d'index seulement, chacune pointant sur =/-
la moitié des enregistrements de la table). Dans le second cas, il sera
plus rapide de faire un balayage direct de la table - donc de ne pas
mettre d'index.
</tech>

Mais là je bloque, je ne trouve pas comment faire une requête qui
requiert les index ?



C'est le problème de ton SGBDR, pas le tien.

Peut-on utiliser plusieurs index ou vaut il mieux prévoir un index
multi-champs spécifique à chaque requête ?



Il vaut mieux apprendre à utiliser un SGBDR - ce qui est un métier à
part entière. Et accessoirement - comme d'autres l'ont déjà recommandé
-, poster dans le newsgroup approprié.

En attendant, ne t'embêtes pas avec des index - attends de voir s'il y a
*vraiment* des problèmes de perfs, et si oui lesquels *exactement*.

D'avance merci.





--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"
Avatar
Téo Path
bruno at modulix vient de nous annoncer :


En attendant, ne t'embêtes pas avec des index - attends de voir s'il y a
*vraiment* des problèmes de perfs, et si oui lesquels *exactement*.



Je sens que çà c'est un bon conseil, que je vais m'empresser de suivre ;-)

--
Teo Path
http://www.hourdeaux.fr.st
Avatar
Téo Path
bruno at modulix a formulé la demande :


En attendant, ne t'embêtes pas avec des index - attends de voir s'il y a
*vraiment* des problèmes de perfs, et si oui lesquels *exactement*.

D'avance merci.






Je reviens quand même à la charge.

Avec une liste d'enregistrements que je veux afficher par ordre alphabétique des noms et
des prénoms.

Comment faire pour privilégier le tri par noms puis seulement après le tri par prénoms et
non pas l'inverse ?

--
Teo Path
http://www.hourdeaux.fr.st
Avatar
Téo Path
Téo Path a pensé très fort :
bruno at modulix a formulé la demande :


En attendant, ne t'embêtes pas avec des index - attends de voir s'il y a
*vraiment* des problèmes de perfs, et si oui lesquels *exactement*.

D'avance merci.






Je reviens quand même à la charge.

Avec une liste d'enregistrements que je veux afficher par ordre alphabétique
des noms et des prénoms.

Comment faire pour privilégier le tri par noms puis seulement après le tri
par prénoms et non pas l'inverse ?



Bon çà va je crois avoir trouvé, merci

--
Teo Path
http://www.hourdeaux.fr.st
Avatar
Téo Path
Téo Path a formulé la demande :
Téo Path a pensé très fort :
bruno at modulix a formulé la demande :


En attendant, ne t'embêtes pas avec des index - attends de voir s'il y a
*vraiment* des problèmes de perfs, et si oui lesquels *exactement*.

D'avance merci.






Je reviens quand même à la charge.

Avec une liste d'enregistrements que je veux afficher par ordre
alphabétique des noms et des prénoms.

Comment faire pour privilégier le tri par noms puis seulement après le tri
par prénoms et non pas l'inverse ?



Bon çà va je crois avoir trouvé, merci



Comme on est sur un forum et que çà peut servir à d'autres, même si c'est pas en charte,
je donne quand même la réponse que j'ai trouvée et qui est tout à fait ce qu'il me
fallait.

http://66.102.9.104/search?qÊche:ixwZ1P7MBc8J:www.manuelphp.com/mysql/order-by-optimisation.php+php+order-by&hl=fr&gl=fr&ct=clnk&cd=2

--
Teo Path
http://www.hourdeaux.fr.st
Avatar
bruno at modulix
Téo Path wrote:
bruno at modulix a formulé la demande :


En attendant, ne t'embêtes pas avec des index - attends de voir s'il y a
*vraiment* des problèmes de perfs, et si oui lesquels *exactement*.

D'avance merci.






Je reviens quand même à la charge.

Avec une liste d'enregistrements que je veux afficher par ordre
alphabétique des noms et des prénoms.

Comment faire pour privilégier le tri par noms puis seulement après le
tri par prénoms et non pas l'inverse ?



select (...) order by nom, prenom;

Sérieusement, il y a combien d'enregistrements dans ta liste ? Parce que
d'ici à ce que ça vaille le coup de s'inquiéter de ce genre de détail,
AMHA, tu a le temps de voir venir !-)


--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"
Avatar
Téo Path
Dans son message précédent, bruno at modulix a écrit :
Téo Path wrote:
bruno at modulix a formulé la demande :


En attendant, ne t'embêtes pas avec des index - attends de voir s'il y a
*vraiment* des problèmes de perfs, et si oui lesquels *exactement*.

D'avance merci.






Je reviens quand même à la charge.

Avec une liste d'enregistrements que je veux afficher par ordre
alphabétique des noms et des prénoms.

Comment faire pour privilégier le tri par noms puis seulement après le
tri par prénoms et non pas l'inverse ?



select (...) order by nom, prenom;

Sérieusement, il y a combien d'enregistrements dans ta liste ? Parce que
d'ici à ce que ça vaille le coup de s'inquiéter de ce genre de détail,
AMHA, tu a le temps de voir venir !-)



Pour l'instant pas grand chose :-), zéro pour être précis.

Mais il s'agit d'un annuaire professionnel, à terme, autour des 10.000 enregistrements

--
Teo Path
http://www.hourdeaux.fr.st