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 :

requete mysql vachement lente!


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut requete mysql vachement lente!
    bonjour tous le monde!

    'oilou je viens de decouvrir que mon programme rame a mort quand je fais cette requette sur deux tables abritant plus de 10000 donnees :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM clients c
    LEFT OUTER JOIN service s ON c.id = s.id_user

    HAAAAAAAAAAAAA

    pourquoi????? je savais pas que ce genre de requete faisait ramer la machine????

    pourtant si je fais un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT *
    FROM clients
    he bah boum! ca rame plus.....je suis un homme foutu, j'ai besoin de selectionner comme la premiere requete mais ca rame quinze mille fois trop...

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Simplement parce que votre requête n'est pas optimiser.
    Et vous ne pouvez pas comparer vos deux requêtes parce que , elle ne font pas le même travail.

    Dans le cas de votre requête avec jointure, vous réclamer, l'ensemble des données, même celles qui n'ont pas de correspondance entre elles(LEFT OUTER JOIN).

    Commencer par sélectionner les données vraiment nécessaire.

  3. #3
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    oui mais non!

    il faut que je selectionne tous les elements de la table clients ET en plus si l'id de client correpond a l'id de service, il faut afficher autant de fois qu'il y a
    correspondance l'element de la table client -donc si un id client correpond a trois id user, il sera afficher 3 fois et si y'a aucune correpondance, il sera afficher une fois quand meme...



    comment faire sans ma requete initiale?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    D'accord avec vous, la requête correspond, mais posez vous la question, est-il nécessaire d'avoir '*', peut-être que la sélection de quelques champs est seulement nécessaire?

  5. #5
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    par la malpeste, comme vous etes dans votre bon droit!

    il s'avere qu'en effet l'outrecuidance de ma spontaneité m'aie fait oublié mes plus elementaires devoirs : ne jamais se morfondre a utiliser le * a la place des champs utiles.

    merci donc, mon bon ami

    d'autres ameliorations sont elles possibles?

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Si la requête est récurrente, peut-être voir a faire un index, sur les champs sélectionner, afin d'augmenter la vitesse de chargement!

Discussions similaires

  1. [MySQL] Requete Mysql très lente
    Par Ancool dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/03/2011, 10h40
  2. arret requete mysql
    Par titiyo dans le forum Bases de données
    Réponses: 5
    Dernier message: 15/10/2004, 17h40
  3. Problème sous requete MySQL
    Par gavelin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2004, 10h36
  4. Requete MySql pour Mambo Open source
    Par azman0101 dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/06/2004, 09h34

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