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

Langage SQL Discussion :

Optimisation de requêtes


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut Optimisation de requêtes
    Bonjour,
    J'aurai besoin d'optimiser au maximum cette requête qui prend pas mal de ressources :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    print 'CoverInfo.CommercialPriceAdjustmentId'
          select CoverInfo.CommercialPriceAdjustmentId, count(1) as Cnt 
                 from colibriresource..CoverInfo join colibriresource..policyversion pv on pv.policyversionid = CoverInfo.policyversionid  
                      and pv.policyversionid=
                             (select max(policyversionid) 
                             from   colibriresource..policyversion pv2 
                             where pv2.policygeneralid=pv.policygeneralid) 
                             and CommercialPriceAdjustmentId not in (0,1,2,3,13,14)
                             group by CommercialPriceAdjustmentId
    Merci à tous les internautes pour votre retour rapide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 240
    Points : 12 872
    Points
    12 872
    Par défaut
    Bonjour,
    Peut-être qu'en remplaçant la sous-requête par une jointure:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select CoverInfo.CommercialPriceAdjustmentId, count(1) as Cnt 
    from colibriresource..CoverInfo
    inner join colibriresource..policyversion pv on pv.policyversionid = CoverInfo.policyversionid and CommercialPriceAdjustmentId not in (0,1,2,3,13,14)
    left outer join colibriresource..policyversion pv2 on pv2.policygeneralid=pv.policygeneralid and pv2.policyversionid >  pv.policyversionid
    where pv2.policygeneralid is null
    group by CommercialPriceAdjustmentId

    Tatayo.

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 091
    Points : 31 510
    Points
    31 510
    Billets dans le blog
    16
    Par défaut
    Bonjour,


    Citation Envoyé par patricia77360 Voir le message
    J'aurai besoin d'optimiser au maximum cette requête.
    Quel est votre SGBD ? Avez-vous effectué un EXPLAIN ?

  4. #4
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 4
    Points
    4
    Par défaut Optimisation
    Merci beaucoup Tatayo

    Une autre requête me prend aussi beaucoup de ressources :
    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
    select 'print '''+c.shortdesc +'.'+p.shortdesc+'''  select '+c.shortdesc + '.'+p.shortdesc+', count(1) as Cnt from colibriresource..'+ c.shortdesc + 
    ' join colibriresource..policyversion pv on pv.policyversionid = '+c.shortdesc+'.policyversionid  and pv.policyversionid=
     (select max(policyversionid) from 
    colibriresource..policyversion pv2 where pv2.policygeneralid=pv.policygeneralid) where ' + p.shortdesc + ' not in (' + pva.lookupacceptedvalueslist + ') group by ' + p.shortdesc ,
    productattributename, pva.productattributeid, pva.isinput, 
    pva.isinputOldValue, pva.isinputLastValue, pva.lookuptablename, 
    pva.lookupacceptedvalueslist  
    from productversionattribute pva
    join productattribute pa on pa.productattributeid=pva.productattributeid
    join Luproductattributeclass c on c.productattributeclassid=pa.productattributeclassid
    join luproductattributeproperty p on p.productattributepropertyid=pa.productattributepropertyid
    join ProductAttributeMapping pm on pa.productattributeid=pm.productattributeid
    where pva.productversionid = 11121201
    and pva.lookuptablename is not null
    and pva.lookuptablename != ''
    and pva.lookupacceptedvalueslist !=''
    and c.shortdesc not like 'PolicyVersion'
    order by productattributename
    Qu'en pensez-vous ? Merci par avance

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 240
    Points : 12 872
    Points
    12 872
    Par défaut
    Je dirai même faute, même punition
    Bref il faut supprimer la sous-requête et la remplacer par une jointure.

    Tatayo

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