Optimisation Requete SQL

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par flipou, 14 Juin 2013.

  1. flipou
    flipou Nouveau WRInaute
    Inscrit:
    6 Septembre 2007
    Messages:
    17
    J'aime reçus:
    0
    Bonjour à tous ,

    Je cherche à optimiser cette portion de requete qui fonctionne bien "Mais on peut surement faire mieux ;)" :

    Code:
    AND PF.produits_id IN (select PF.produits_id from produits_filtres PF WHERE PF.filtres_id=10)
    AND PF.produits_id IN (select PF.produits_id from produits_filtres PF WHERE PF.filtres_id=15)
    
    GROUP BY P.id 
    j'ai essayé :

    Code:
    AND PF.filtres_id in(10,15)
    GROUP BY P.id 
    HAVING count(*) = 2
    Mais c'est plus gourmand !

    Si vous avez des idées ?

    Merci
     
  2. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 640
    J'aime reçus:
    38
    Bonjour Monsieur

    Si je comprend bien, le résultat doit être la conjonction des deux ensembles d'éléments dont l'élément filtre est soit 10 soit 15.

    Normalement, ta requête MySQL récente, semble avoir une rédaction claire et précise, aussi bien formelle que côté focntionnalité.

    Quant à la charge relative des deux requêtes ( première requête : deux requêtes indépendantes de filtrage, requête plus récente : une seule requête de filtrage avec une condition il est vrai équivalente à OR, mais sur seulement deux valeurs : 10 et 15, je pense que l'occupation mémoire est censée être optimisée par le moteur MySQL, et en tout cas, une requête au lieu de deux, il n'y a pas photo.

    Ta requête MySQL récente, me semble plus rapide et économe en mémoire que la première requête.

    Je ne sais pas s'il serait possible de faire une seule requête MySQL d'union du type :

    SELECT produits_id FROM produits_filtres WHERE filtres_id=10 UNION SELECT produits_id FROM produits_filtres WHERE filtres_id=15;

    Je laisse à d'autres le soin de dire si cette dernière requête, est bien optimisée par le moteur MySQL.

    En tout cas, sous l'angle purement formaliste SQL, cette dernière requête me paraîtrait plus en accord avec la norme du langage SQL, compte tenu du problème posé, qui correspond exactement à cette syntaxe.

    Bien amicalement.

    Jean François Ortolo
     
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 640
    J'aime reçus:
    38
    Rebonjour Monsieur

    Je corrige l'erreur que j'ai faite dans la requête MySQL.

    Voici la requête théoriquement correcte.:

    SELECT produits_id FROM produits_filtres WHERE filtres_id=10 INTERSECT SELECT produits_id FROM produits_filtres WHERE filtres_id=15;

    Le résultat, est bien la conjonction des résultats des deux requêtes MySQL ( valeurs 10 et 15 ).

    J'étais obnubilé par le mot "OR" que j'avais mentionné par erreur comme condition reliant les deux requêtes.

    Je pense ( les autres intervenants pourront confirmer ou infirmer ), que ce type de requête, est bien optimisé come il faut par le moteur MySQL.

    Bien amicalement.

    Jean François Ortolo
     
  4. flipou
    flipou Nouveau WRInaute
    Inscrit:
    6 Septembre 2007
    Messages:
    17
    J'aime reçus:
    0
    bonjour Jean François,

    Merci pour ces précisions

    Je cherche bien comme condition ou les valeurs sont égales à 10 ET 15 du même champ (meme voir plus de conditons...)
    dans un monde parfait AND champ= 10 AND champ = 15 mais non ;)

    Parfois 2 requetes sont plus perfomantes Que 1,


    Je testerais ta proposition.

    Merci

    Franck
     
Chargement...
Similar Threads - Optimisation Requete SQL Forum Date
Mysql optimisation index/requêtes. Développement d'un site Web ou d'une appli mobile 14 Avril 2009
[PHP/MySQL] Optimisation multiples requêtes Développement d'un site Web ou d'une appli mobile 24 Juin 2008
[MYSQL] Pb de requête + optimisation structure table Développement d'un site Web ou d'une appli mobile 18 Janvier 2008
Optimisation requete sql MyPHPAnnuaire - Categorizator Administration d'un site Web 22 Août 2006
Optimisation requêtes mysql Développement d'un site Web ou d'une appli mobile 23 Mars 2006
optimisation de temps de reponse des requetes sql Problèmes de référencement spécifiques à vos sites 9 Août 2005
Optimisation requetes MySQL Administration d'un site Web 1 Mars 2005
optimisation requete sql Administration d'un site Web 17 Août 2004
Optimisation requete sql sur mutualisé Administration d'un site Web 10 Juin 2004
MySQL : optimisation des requêtes sql Administration d'un site Web 14 Mars 2004
Disparation des requêtes sous "Optimisation du référencement" Google Analytics 24 Janvier 2016
Optimisation requêtes : jointures / index ? Développement d'un site Web ou d'une appli mobile 28 Juin 2014
C'est quoi optimisation du référencement / requêtes / dans Analytics ? Google Analytics 24 Janvier 2014
Optimisation de requêtes par jointure Développement d'un site Web ou d'une appli mobile 1 Juillet 2013
Requête "define", optimisation possible ??? Problèmes de référencement spécifiques à vos sites 14 Mars 2008
Optimisation d'une requête Développement d'un site Web ou d'une appli mobile 26 Février 2008
Optimisation requète - group by Développement d'un site Web ou d'une appli mobile 10 Août 2006
optimisation d'une requête sur deux mots Problèmes de référencement spécifiques à vos sites 10 Mai 2005
Google empêche l'optimisation sur requêtes stratégiques ? Référencement Google 26 Août 2004
Optimisation d' un site avec Yoast Débuter en référencement 5 Mai 2022