IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

execution table temporaire ? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 45
    Par défaut execution table temporaire ?
    Bonjour,

    Voila une question un peu technique, j'ai une requete lourde que j'aimerai simplifier en créant une table temporaire lors de la conexion du user ,
    Cela peut vous paraitre bete , mais comment faire en sorte que la requete pour ma table temp ne soit exécuter qu'un seule fois . Je comptais
    créer ma table temp dés conexion du user en la mettant dans le header par ex.

    Mais.. Comme le header se charge à chaque fois, la table temp est recréer a chaque fois ??

    Désolé si je vous parait stupide , je débute..

    Jess

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Par défaut
    Si le but de cette table temporaire est de récupérer des informations sans avoir une requête trop lourde alors il vaut mieux utiliser les vues : http://dev.mysql.com/doc/refman/5.0/fr/views.html

    Une vue se comporte comme une "table virtuelle", son contenu est mis à jour automatiquement lorsque les tables auxquelles elle est rattaché sont modifiées.

  3. #3
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    pas dans mysql, c'est une plutôt requête encapsulée, exécutée à chaque appel à la vue...

    dans d'autres sgbd c'est en effet plutôt une table temporaire remise à jour en fonction des dépendances...

    si tu as une page dynamique et que son contenu n'est pas mis en cache oui ça s'exécutera à chaque appel de la page...

    pour les table temporaire je t'ai répondu dans ton autre post dans la section mysql...

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 45
    Par défaut
    Salut, merci pour les liens,

    jai lu un peu plus sur les vues, et je en pense pas que les utiliser
    puisse me faire gagner en performance car la requete qui construit la vue est apelé a chaque requete sur cette dite vue.
    L'idée n'étant pas de simplifier la requete mais de précalculé des info.

    Pour etre précis je dois calculer des distance avec latitude et longitude,
    mon objectif étant de précalculer a la conexion pour faire un tri sur résultat
    avec between sur la table temporaire crée. Ca vous parait sencé ?
    une ptite confirmation ne serait pas de refus !

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    si tu veux gagner alors fais une procédure stockée

    dedans:
    • tu détermines le carré englobant la zone où tu vas appliquer la formule de distance, ce qui va te délimiter rapidement les données où tu vas appliquer la formule de distance:
      • tu détermines le demi écart horizontal et le demi écart vertical
      • tu les ajoutes et soustrais aux coordonnées de référence pour obtenir les valeurs min et max de longitude et latitude
    • tu construis ensuite une requête interne (allant dans le from d'une autre que j'appellerais externe ici) qui sélectionne les données en appliquant 2 between (1 sur les longitudes, 1 sur les latitudes) avec les valeur min/max précédemment calculées.
    • tu construis alors ta requête externe autour pour appliquer la formule de distance en entourant la requête interne avec des parenthèses et en la renommant avec une lettre par exemple comme une table que tu renommes


    pour rappel 1MN = 1'arc en latitude = 1852m
    soit x la distance en m que tu cherches:
    • en latitude: ecartlat*60*1852=x donc ecartlat=x/111120
    • en longitude: ecartlon*111120*cos(lat)=x donc ecartlon=x/(111120*cos(lat))

    on en déduit:
    • latmin=lat-ecartlat,latmax=lat+ecartlat
    • lonmin=lon-ecartlon,lonmax=lon+ecartlon
    et hop ton carré englobant est défini...avec lat et lon, les coordonnées du point de référence

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 45
    Par défaut
    hyper intéréssant ! mais je suis pas sur davoir le niveau la..
    Jai peur d'avoir trop à soliciter d'aide pour le mettre en place, il me faudrait un exemple concret(voir une solution lol) !
    Par rapport à ce que tu as dis , je crois avoirs fais la moitié ,
    apres pour mettre ca en format "procédure stockée " ... Ca alair moins précis qu'avec radius mais plus rapide.., à tester..
    Sinon pour la procédure stockée, je suis bien curieuse et intéréssé

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
       SELECT *, 
           ACOS(SIN(RADIANS(48.858484)) * SIN(RADIANS(`lat`)) + 
                COS(RADIANS(48.858484)) * COS(RADIANS(`lat`)) * COS( 
                     RADIANS(`lon`) - RADIANS(2.352849))) * 6371 AS `distance` 
    FROM   (SELECT * 
            FROM   `villes` 
            WHERE  `lat` >= 48.858484 - DEGREES(5 / 6371) 
                   AND `lat` <= 48.858484 + DEGREES(5 / 6371) 
                   AND `lon` >=2.352849 - DEGREES(5/ 6371) / 
                                              COS(RADIANS(48.858484)) 
                   AND `lon` <=2.352849 + DEGREES(5/ 6371) / 
                                              COS(RADIANS(48.858484)) 
           ) AS `jess` 
    HAVING `distance` <=5
    ORDER  BY `distance` ASC

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Table temporaire
    Par Tapioca dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/07/2004, 11h32
  2. Table temporaire et résultat requête
    Par Royd938 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2004, 14h24
  3. Suppression table temporaire...
    Par Royd938 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2004, 12h00
  4. [procédure stockée] table temporaire commençant par #???
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/04/2004, 12h23
  5. Nettoyage de table temporaire
    Par Alain Dionne dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/02/2004, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo