Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2683 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Optimisation de requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Optimisation de requete

n°1784339
aliasDrizz​t
Posté le 09-09-2008 à 11:44:52  profilanswer
 

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
mood
Publicité
Posté le 09-09-2008 à 11:44:52  profilanswer
 

n°1784341
flo850
moi je
Posté le 09-09-2008 à 11:46:27  profilanswer
 

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

n°1784350
aliasDrizz​t
Posté le 09-09-2008 à 11:52:03  profilanswer
 

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
n°1784383
grosbin
OR die;
Posté le 09-09-2008 à 12:24:28  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Optimisation de requete

 

Sujets relatifs
Accelerer ma requete qui dure 1min30Optimisation requête (Mysql)
MySQL - Optimisation d'une requête avec plusieurs JOINOptimisation d'une requete mysql
[MySQL] Besoin d'aide - Optimisation d'une requête très lourde[MySQL] Optimisation requete sur ENORME table ...
[PHP - MYSQL] optimisation d'une requete[mysql]optimisation d'un requete
[MySQL]optimisation requete[MYSQL PHP] Requete ne renvoyant qu'1 champ, optimisation du code.
Plus de sujets relatifs à : [MySQL] Optimisation de requete


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR