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