[MySQL] Optimisation de requete

Optimisation de requete [MySQL] - SQL/NoSQL - Programmation

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
Reply

Marsh Posté le 09-09-2008 à 11:44:52   

Reply

Marsh Posté le 09-09-2008 à 11:46:27    

sauf erreur de ma part, l'optimiseur Mysql fera ça tout seul ;)

Reply

Marsh Posté le 09-09-2008 à 11:52:03    

ah ben c est bien la peine que je me galère alors :D
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 ;)


---------------
Topic vente DDR / réseaux
Reply

Marsh Posté le 09-09-2008 à 12:24:28    

Hop je suggère mon bordel bien à moi :D

Code :
  1. SELECT SQL_CACHE id,Reste,Terrain,Agrement FROM SpeMed WHERE id IN (1171,1157,1169,1215,1223) AND Reste>0 ORDER BY case id when 1171 then 1 when 1157 then 2 when 1169 then 3 when 1215 then 4 when 1223 then 5 end


 - 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 :D

 

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 ?


Message édité par grosbin le 09-09-2008 à 12:25:38

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed