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 :

Problème de performance compter enregistrement


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 8
    Par défaut Problème de performance compter enregistrement
    Bonjour à toute la communauté,

    Mon premier message ici, une petite présentation s'impose, voila je m'appelle Erwann, 23 ans d'orléans et je gère une site de petites annonces...

    Je rencontre un petit souci pour calculer le nombre d'enregistrement sur plusieurs tables.

    En fait je possède une table de 100 000 membres, chaque membre à la possibilité de déposer un bien dans différentes tables (auto, moto, bateau, immo ...)

    Je souhaiterais faire une sorte de back up chaque jour dans une table qui contiendrait le nombre de biens publiées pour chaque membre.

    J'ai déjà un petit quelque chose mais le temps pour le comptage est vraiment trop long

    Voici ce que j'ai déjà :

    Je fais un boucle de tous les membres, je récupère l'id et ensuite je calcule le nombre de bien de chaque table.

    Avec "seulement" 10000 membres c'est hyper long.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $select = "SELECT id_user FROM user ORDER BY id_membre DESC limit 10000";
    $result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
     
     
     
    	while($row = mysql_fetch_array($result)) 
    	{
    	$id_user=$row['id_user'];
     
    	$selecti = "SELECT count(id_automobile) FROM auto WHERE id_user='$id_user' limit 50";
        $resulti = mysql_query($selecti,$link)  or die ('Erreur : '.mysql_error() );
        $rowi = mysql_fetch_row($resulti);
        $total_automobile = $rowi[0];
     
    	$selecti = "SELECT count(id_moto) FROM auto WHERE id_user='$id_user' limit 50";
        $resulti = mysql_query($selecti,$link)  or die ('Erreur : '.mysql_error() );
        $rowi = mysql_fetch_row($resulti);
        $total_moto = $rowi[0];
     
         $total_user  =  $total_automobile + $total_moto;
     
    echo"$id_membre à $total_user annonce(s)";
     }
    Quelqu'un aurait il une méthode pour que le comptage soit plus rapide, une requête optimisée ou quelque chose pour me mettre sur la piste ...

    Merci d'avance de votre aide

    Erwann

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Déjà tu peux faire une seule requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(id1) as id1, count(id2) as id2 from table
    Il y a une solution que j'ai en tête mais je sais pas si ca va fonctionner vu que j'ai jamais testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(id1) as id1, count(id2) as id2, sum(id1 + id2) as total from table

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 8
    Par défaut
    Merci pour ta réponse et avoir déplacé le sujet.

    Faut que je comprennes maintenant

    Donc en fait en une seule fois, je peux récupérer le nombre d'annonce déposé sur toutes les tables ?

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Pour la première solution tu récupéres effectivement le nombre d'élément pour les différents id (et ce sauf erreur de ma part)

    Pour la deuxième solution, j'ai jamais testé mais si ca fonctionne ça peut etre intéressant à savoir (malheureusement je peux pas tester )

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 8
    Par défaut
    Pourrais tu me donner ton avis sur cette requête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selecti = "select count(id_auto) as id_auto, count(id_moto) as id_moto, sum(id_auto + id_moto) as total  FROM auto,moto WHERE auto.id_membre='$id_membre' OR moto.id_membre='$id_membre'";
    Je n'ai pas d'erreur, je n'ai rien ça charge ...

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    testes dans phpmyadmin pour voir ce que ca donne...

    Sinon tu as bien mis le die(mysql_error()) ?

Discussions similaires

  1. [jeu]problème de performance d'un algo
    Par le Daoud dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 30/05/2005, 16h07
  2. [C#] Probléme de performance avec IsDbNull
    Par jab dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/04/2005, 11h39
  3. [oracle 9i][Workbench]Problème de performance
    Par nuke_y dans le forum Oracle
    Réponses: 6
    Dernier message: 03/02/2005, 17h38
  4. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18

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