|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 121 ![]() |
Bonjour,
Je voudrais optimisé mon code, quelqu'un peut m'aider et donné des suggestions. Citation:
__________________
Knowledge is useless until you share it.
|
|
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Inscription : janvier 2005 Messages : 71 ![]() |
Si j'ai bien compris le schéma de ta base, tu peux utiliser comme requête :
Code :
|
||
|
00
|
|
|
#3 | |||
![]() ![]() ![]() Inscription : septembre 2002 Messages : 1 591 ![]() |
Citation:
1. SELECT *, dans la mesure du possible, il faut toujours essayer d'éviter le "*" sauf si on a réellement besoin de rappatrier toutes les colonnes. 2. Il faut préférer les mots clés de jointure tels que INNER JOIN, LEFT JOIN, RIGHT JOIN, etc...plutôt que d'effectuer celles-ci dans la clause WHERE. Théoriquement, la clause WHERE est réservée aux critères uniquement. Ceci dit, loin de moi de vouloir distribuer les bons points, donc, fais comme tu le sens |
|||
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 121 ![]() |
moi j'utilise toujours '*' mais quelles sont les risques d'utiliser celui-ci ?
__________________
Knowledge is useless until you share it.
|
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() Inscription : septembre 2002 Messages : 1 591 ![]() |
Citation:
Citation:
Tu devrais théoriquement faire SELECT Nom,Prenom,Titre FROM Clients.... Seules les informations liées à ces colonnes te seront renvoyées par le SGBD. Tu réduiras du même coup le trafic réseau et ton traitement côté PHP sera lui aussi plus rapide car moins de données. D'autre part, cette manière de travailler est beaucoup plus parlante dans le code car : - Tu sais exactement ce dont tu as besoin - Le fait de nommer explicitement les colonnes te renseigne déjà sur la structure de ta table. - Si un jour, tu modifies ta table et que tu ajoutes un champ pour usage interne qui ne devrait jamais être affiché, en utilisant "*", tu rappatrieras à chaque fois la valeur de ce champ inutilement. |
||
|
|
00
|
|
|
#6 | ||||
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 121 ![]() |
Citation:
Citation:
__________________
Knowledge is useless until you share it.
|
||||
|
|
00
|
|
|
#7 | |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 121 ![]() |
Citation:
merci beaucoup PS: par rapport à ce que j'avais au début à maintenant j'ai perdu beaucoup de ligne en gardant le meme résultat
__________________
Knowledge is useless until you share it.
|
|
|
|
00
|
|
|
#8 | |||
|
Membre régulier
![]() Inscription : janvier 2005 Messages : 71 ![]() |
Citation:
Par contre, pour le second point... t'as une doc là dessus ??? Citation:
Citation:
|
|||
|
00
|
|
|
#9 | |
![]() ![]() ![]() Inscription : septembre 2002 Messages : 1 591 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 | ||
|
Membre habitué
![]() Inscription : octobre 2003 Messages : 102 ![]() |
Salut,
je rajouterais que de nommer uniquement les champs dont on a besoin permet d'utilser mysql_fetch_row() (le plus économique de la famille des fetch) plus facilement car on n'a pas forcement en tete la position ordinale des champs de sa tables. Quand au JOIN déja, il est issu de la norme SQL99 qui était venu remplacer la norme SQL92. Il est donc plus au gout du jour, plus clair entant qu'il confère une syntaxe explicite et dédiée aux jointures en les séparant du reste de la clause WHERE. En plus Il permet souvent l'economie des alias qui la surchargent. Et surtout plus puissant que les jointures en clause where. JE ne vais pas me répéter je vous renvoie a ce topic ou je donne quelques exemples simples. http://www.developpez.net/forums/sho...d.php?t=191918 (message #8) Sinon ben voila la version JOIN du présent problème (je part du principe qu'aucun nom de champ sité dans la requete n'est commun à 2 tables =>aucun d'alias) J'ai changé l'ordre d'apparition des tables, afin de pouvoir enfiler les tables comme des perles dans ma requete (on commence toujours par une table a l'extrémité pour pouvoir enchainer les JOIN): Code :
__________________
il n'y a pas de sotte existence |
||
|
|
00
|
|
|
#11 | ||
|
Membre régulier
![]() Inscription : janvier 2005 Messages : 71 ![]() |
Erf, désolé, je suis en mysql 3.32.58, et cette version semble ne pas connaitre le JOIN seul... Je ne sais pas comment il se comporte (équivalent de LEFT JOIN ?)
Code :
|
||
|
00
|
|
|
#12 | ||
|
Membre habitué
![]() Inscription : octobre 2003 Messages : 102 ![]() |
Salut,
effectivement essaye ca: Code :
tu comprendras visuellement la finesse du LEFT JOIN en essayant d'abord sans le "AND gagnant IS NOT NULL " et ensuite avec. la différence entre les retours te permettra de comprendre l'interet de jouer avec les LEFT JOIN et RIGHT JOIN.
__________________
il n'y a pas de sotte existence |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com