Optimisation de requete [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 09-09-2008 à 11:46:27
sauf erreur de ma part, l'optimiseur Mysql fera ça tout seul
Marsh Posté le 09-09-2008 à 11:52:03
ah ben c est bien la peine que je me galère alors
J'ai même fait une explication SQL parce que je pensais a ca, mais ca m a pas bcp éclairé...
ben merci en tout cas
Marsh Posté le 09-09-2008 à 12:24:28
Hop je suggère mon bordel bien à moi
Code :
|
- J'ai une table "internes" qui contient les voeux des personnes ( les identifiants listés dans l'ordre ), ce qui correspond au id in(x,y,z), dont le Reste>0 order by case id (ouch)
> mon but et d'obtenir le premier voeux dont le reste > 0 dans l'ordre des voeux de la personne et raccourcir au maximum les requetes
le Must serait de tout passer via Sql, autant rêver
Une fois une correspondance trouvé j'update le "SpeMed.Reste=SpeMed.Reste-1"
et ça mouline pour plus de 1000 personnes à chaque fois ..
Qq'un dispose d'une belle lanterne ?
... Parfois je me demande si je ferais pas mieux de mettre l'ensemble des tables dans un array PHP et que je fasse tout le traitement en PHP, puis j'aboutit à qques requetes compactes et super chirurgicales, nan ?
Marsh Posté le 09-09-2008 à 11:44:52
Bonjour tout le monde.
En fait je suis obligé de faire dans une requete deux fois le meme calcul pour obtenir le meme résultat , une fois dans le select pour l affichage, et une fois dans le where pour une discrimination.
Voici la requete :
SELECT m1.id_membre,m2.id_membre, (6366*acos(cos(radians(m2.latitude))*cos(radians(m1.latitude))*cos(radians(m1.longitude)-radians(m2.longitude))+sin(radians(m2.latitude))*sin(radians(m1.latitude))))
as Proximite
from membre as m1, membre as m2 where m1.id_membre <> m2.id_membre AND m1.latitude<>'' AND m2.latitude<>'' AND (6366*acos(cos(radians(m2.latitude))*cos(radians(m1.latitude))*cos(radians(m1.longitude)-radians(m2.longitude))+sin(radians(m2.latitude))*sin(radians(m1.latitude)))) <10
order by Proximite
Est ce qu'il est possible de stocker ce calcul pour ne pas avoir a le faire deux fois? j ai cherché dans le doc mysql , mais j'ai pas trouvé de réponse à ma question ?
Merci
---------------
Topic vente DDR / réseaux