JeuWeb - Crée ton jeu par navigateur
[SQL] = et in, est ce que ça vaut le coup de se casser la tête - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [SQL] = et in, est ce que ça vaut le coup de se casser la tête (/showthread.php?tid=3029)



[SQL] = et in, est ce que ça vaut le coup de se casser la tête - Ter Rowan - 09-09-2008

ç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 :
<?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 :
<?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)


RE: [SQL] = et in, est ce que ça vaut le coup de se casser la tête - Sephi-Chan - 09-09-2008

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 Smile).


Sephi-Chan


RE: [SQL] = et in, est ce que ça vaut le coup de se casser la tête - Ter Rowan - 09-09-2008

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....)


RE: [SQL] = et in, est ce que ça vaut le coup de se casser la tête - Sephi-Chan - 09-09-2008

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