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 :

optimisation de requête


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    458
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 458
    Par défaut optimisation de requête
    Bonjour je voulais savoir comment faire pour optimiser ma requette ou la raccourcir si quelqu'un peu m'éclairer ou me dirigé ce serai gentille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $total_commandes = "";
    	//client payE 
    	//adwords
    	$query_ad = "SELECT   COUNT(DISTINCT customers_id) AS count_adw FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' )and customers_from='adwords'  ";
    	$result_ad = mysql_query($query_ad); 
    	//rien
    	$query ="SELECT   COUNT(DISTINCT customers_id) AS count_adw FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' )and customers_from=''   ";
    	$result = mysql_query($query);
    	//autre
    	$query_oth ="SELECT   COUNT(DISTINCT customers_id) AS count_adw FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' )and customers_from!='adwords' and  customers_from!='' ";
    	$result_oth = mysql_query($query_oth);
    	//total
    	$query_tt = "SELECT   COUNT(DISTINCT customers_id) AS count_adw FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' )";
    	$result_tt = mysql_query($query_tt);
    je veu sortire plusieur info dans un tableau merci

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT   COUNT(DISTINCT customers_id) AS count_adw FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' ) and (customers_from='adwords' OR customers_from=''   " OR (customers_from!='adwords' and  customers_from!='' "))
    Cela dit avec ton 4e cas - et si je dis pas de bétises - les 3 1er cas sont implicites et donc inutiles !

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    euh... la il a une seule reponse... Ce que je comprends c'est qu'il en veut 4 quand meme ;-)

    Deja de base tu vires les DISTINCT qui a priori ne servent a rien (on est bien d'accord que customers_id est ta cle primaire de ta table).
    Ils ne servent a rien, a part a faire que l'optimiseur de requete va essayer de le traiter avant de se rendre compte que c pas la peine.

    Ensuite tu peux faire que 3 requetes a la place des 4. Vue que la 4eme est la somme des 3 premieres.

    Apres tu dois pouvoir tout mettre dans une seule requete
    SELECT t1.res, t2.res, t3.res FROM (SELECT count(customers_id) as res... ta premiere requete) t1, (SELECT count(customers_id) as res... 2nd requete) t2, (SELECT count(customers_id) as res... 3eme requete) t3

  4. #4
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    458
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 458
    Par défaut
    donc avec sa garrath je peu avoir la somme d'avec adword san adword et autre??
    et je met quel clause where

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT t1.res, t2.res, t3.res FROM (SELECT count(customers_id) as resultat1) t1, (SELECT count(customers_id) as res2) t2, (SELECT count(customers_id) as    res3) t3
    une fois que j'ai mis sa aprè dans mon where laqul serai la plus aproprié???

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    tu remets tes requetes completes enfait...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT t1.count_adw, t2.count_adw, t3.count_adw FROM (SELECT   COUNT(customers_id) AS count_adw FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' )and customers_from='adwords' ) t1,
    (SELECT   COUNT(customers_id) AS count_adw FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' )and customers_from='' ) t2,
    (SELECT   COUNT(customers_id) AS count_adw FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' ) ) t3
    et ton dernier tu sommes tes 3 resultats

  6. #6
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    458
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 458
    Par défaut
    merci c'est gentile j'ai une autre question si je veut un totale avec d'autre donnée d'une autre table et je veut réutilisé un total de cette table avec un otre total de l'autre table comment je fais
    j'utilise le t2.count_r ???

    si jamais j'ai rajouté un et gardé le total
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query_ad = "SELECT t1.count_adw, t2.count_r, t3.count_aff, t4.count_tt FROM (SELECT   COUNT(customers_id) AS count_adw FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' )and customers_from='adwords' ) t1,
    (SELECT   COUNT(customers_id) AS count_r FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' )and customers_from='' ) t2,
    (SELECT   COUNT(customers_id) AS count_aff FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' )and customers_from!='adwords' and  customers_from!='' ) t3,
    (SELECT   COUNT(customers_id) AS count_tt FROM customers WHERE  (customers_client='1' or customers_emv='1' or customers_seance ='1' or customers_emv='1' ) ) t4 ";
     $result = mysql_query($query_ad);

Discussions similaires

  1. [Access] Optimisation performance requête - Index
    Par fdraven dans le forum Access
    Réponses: 11
    Dernier message: 12/08/2005, 14h30
  2. Optimisation de requête avec Tkprof
    Par stingrayjo dans le forum Oracle
    Réponses: 3
    Dernier message: 04/07/2005, 09h50
  3. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55
  4. optimisation des requêtes
    Par yech dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/09/2004, 19h03
  5. Optimisation de requête
    Par olivierN dans le forum SQL
    Réponses: 10
    Dernier message: 16/12/2003, 10h09

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