Ter Rowan
Membre
Messages : 305
Inscription : Jul 2008
Réputation : 5
|
[SQL] = et in, est ce que ça vaut le coup de se casser la tête
ça va être très simple;
j'ai une variable $this->_comp
qui contient soit un id, soit des id séparés par une virgule (pour nb_comp, je vous laisse deviner )
Code PHP :
if ($this->_nbComp ==1) $Req ='SELECT valeur FROM comp WHERE id_perso ='.$this->_idPerso.' AND id_comp = '.$this->_comp; else $Req ='SELECT valeur FROM comp WHERE id_perso ='.$this->_idPerso.' AND id_comp in ('.$this->_comp.')';
l'idée là était de gagner un peu de temps (au début je demandais à mysql de faire une somme des prs_cp_valeur dans le cas du "in" mais j'ai désormais besoin du détail)
et donc... est ce que ça vaut le coup de laisser ce if ou je m ennuie pour rien :
Code PHP :
$Req ='SELECT valeur FROM comp WHERE id_perso ='.$this->_idPerso.' AND id_comp in ('.$this->_comp.')';
et si y en a qu'un, pas grave....
(même d'un point de vue général, supposons que je veuille une somme, une moyenne, etc.... est ce que ça vaut le coup de séparer 1 de plusieurs)
|
|
| 09-09-2008 10:04 PM |
|
Sephi-Chan
Administrateur
      
Messages : 4,493
Inscription : Aug 2006
|
RE: [SQL] = et in, est ce que ça vaut le coup de se casser la tête
Dans un soucis de généricité, tu peux garder la solution avec IN(), c'est toujours ça de gagner en lisibilité, en maintenance et — dans une moindre mesure — en temps d'exécution (la condition  ).
Sephi-Chan
www.sephi-chan.fr
|
|
| 09-09-2008 10:26 PM |
|
Ter Rowan
Membre
Messages : 305
Inscription : Jul 2008
Réputation : 5
|
RE: [SQL] = et in, est ce que ça vaut le coup de se casser la tête
oui j'adhère à tes arguments
le seul sujet c'est, comme dans une grande majorité des cas on aura le in avec 1 id à l'intérieur,
est ce que le temps perdu par mysql à faire un in à la place d'un = est gagné par php qui évite de faire le if
je pense mais c'est plus de la croyance qu'autre chose (mais bon c'est peut être coupé les cheveux en quatre, je devrais plutôt avancer un peu sur mon code moua....)
|
|
| 09-09-2008 10:55 PM |
|
Sephi-Chan
Administrateur
      
Messages : 4,493
Inscription : Aug 2006
|
RE: [SQL] = et in, est ce que ça vaut le coup de se casser la tête
Je t'avoue que je n'en sais rien du tout. Je suppose que IN() est un poil plus lent qu'une comparaison directe. Cela dit, mon choix personnel serait de conserver l'utilisation du IN(), pour les bénéfices sus-cités.
Par contre, je crois me rappeler que le IN() est recommandé en lieu et place d'une succession de OR.
Code :
SELECT * FROM objets WHERE type IN('casque', 'plastron');
Code :
SELECT * FROM objets WHERE type = 'casque' OR type = 'plastron';
Sephi-Chan
www.sephi-chan.fr
|
|
| 09-09-2008 11:33 PM |
|