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

MS SQL Server Discussion :

optimisation de requetes


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 29
    Par défaut optimisation de requetes
    j'ai quelque soussie pour l'optimisation de ma requete. j'ai reussi à optimiser la requette que voici:

    SELECT TOP 1 ID_Pdp
    FROM X,Y,Z
    WHERE Z.ID_Fam = Y.IDCla_Prd
    AND Y.ID_Prd = X.IDPrd_Pdp
    AND Y.ParFam_Prd = 1
    AND Z.Abr_Fam = 'EC'

    en

    SELECT TOP 1 ID_Pdp
    FROM X,Y
    WHERE Y.ID_Prd = X.IDPrd_Pdp
    AND Y.ParFam_Prd = 1
    and Y.IDCla_Prd = (select ID_Fam from Z where Abr_Fam = 'EC')

    cette transformation m'a permis de gagner 12 secondes.

    de manière analogue, je cherche à appliquer la meme technique sur les autres requetes.

    voici l'un d'eux

    Select ID_Pdp,IDAcp_Pdp,Des_Act,IDPrd_Pdp,Ref_Hca,Des_Hca,Qte_Pdp,PrxAch_Pdp
    ,ModifPrx_Prd,PMP_Prd --(index=PK_ProdPose)(index=popo)
    FROM ProdPose(index=popo), ActPrdt, PrdHca,Produit
    WHERE ID_Act=IDAcp_Pdp AND ID_Hca=IDPrd_Pdp AND IDPrd_Hca=ID_Prd
    AND IDInt_Pdp='00450796'
    ORDER BY ID_Pdp

    en

    DBCC DROPCLEANBUFFERS
    DBCC FREEPROCCACHE

    Select ID_Pdp,IDAcp_Pdp,Des_Act,IDPrd_Pdp,Qte_Pdp,PrxAch_Pdp ,ModifPrx_Prd,PMP_Prd --Ref_Hca,Des_Hca,
    FROM ProdPose, ActPrdt --,PrdHca,Produit
    WHERE ID_Act=IDAcp_Pdp
    AND IDPrd_Pdp in (select ID_Hca
    from PrdHca,Produit
    where IDPrd_Hca=ID_Prd )

    AND IDInt_Pdp='00000045'
    ORDER BY ID_Pdp

    la transformation me renvoie des erreurs
    pourvez vous me dire comment je peu faire pour obtenir un resultat comparable au premier cas.

    merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Au lieu de transformer, commencez par implanter des index sur les bonnes colonnes. Faites aussi des jointures à base de JOIN et non dans le WHERE ! :

    Pour votre exemple 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT TOP 1 ID_Pdp
    FROM X
         INNER JOIN Y ON X.IDPrd_Pdp = Y.ID_Prd
         INNER JOIN Z ON Y.IDCla_Prd = Z.ID_Fam
    WHERE  Y.ParFam_Prd = 1
    AND    Z.Abr_Fam = 'EC'
    Un index existe t-il sur la colonne IDPrd_Pdp de X ?
    Des index existent t-ils sur les colonnes ParFam_Prd, ID_Prd et IDCla_Prd ?
    Des index existent t-ils sur les colonnes ID_Fam et Abr_Fam ?

    Lisez ensuite l'article que j'ai écrit sur l'optimisation : http://sqlpro.developpez.com/cours/optimiser/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 29
    Par défaut
    Citation Envoyé par SQLpro
    Au lieu de transformer, commencez par implanter des index sur les bonnes colonnes. Faites aussi des jointures à base de JOIN et non dans le WHERE ! :

    Pour votre exemple 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT TOP 1 ID_Pdp
    FROM X
         INNER JOIN Y ON X.IDPrd_Pdp = Y.ID_Prd
         INNER JOIN Z ON Y.IDCla_Prd = Z.ID_Fam
    WHERE  Y.ParFam_Prd = 1
    AND    Z.Abr_Fam = 'EC'
    Un index existe t-il sur la colonne IDPrd_Pdp de X ?
    Des index existent t-ils sur les colonnes ParFam_Prd, ID_Prd et IDCla_Prd ?
    Des index existent t-ils sur les colonnes ID_Fam et Abr_Fam ?

    Lisez ensuite l'article que j'ai écrit sur l'optimisation : http://sqlpro.developpez.com/cours/optimiser/

    A +
    bonjour

    du fait des améliorations MS SQL au travert des service pack. le join qu'il soit à gauche ou à droit n'améliore pas le temps d'éxécusion, le SP4 de MS SQL 2000 a été developpé pour supprimer ces soussie de performance. le lien que vous m'avez envoié date de 2003 et je l'avais déjà lu.
    l'optimisation de requete de nos jour passe par le pregroupage. la preuve est que le premier cas m'a permi de gagner 12 secondes.
    je veux juste que vous me disiez ce que je peux améliorer dans le code.

    merci d'avance.

Discussions similaires

  1. Optimisation de requete
    Par Scorff dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 11/07/2005, 09h59
  2. [sgbd]Optimisation des requetes Oracle/Perl
    Par linou dans le forum SGBD
    Réponses: 7
    Dernier message: 30/06/2005, 18h09
  3. Optimiser une Requetes SQL sous ASP
    Par NeHuS dans le forum ASP
    Réponses: 8
    Dernier message: 18/04/2005, 16h26
  4. Optimisation de requete
    Par cyril dans le forum SQL
    Réponses: 3
    Dernier message: 09/10/2003, 08h57
  5. Optimisation des requetes
    Par bifidus dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/10/2003, 11h29

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