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

Développement SQL Server Discussion :

Différence de plan d'exécution sur une requête lancé depuis c# ou SSMS


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2018
    Messages : 4
    Par défaut Différence de plan d'exécution sur une requête lancé depuis c# ou SSMS
    Bonjour,

    J'ai une requête lancé depuis c# via un DbCommand.ExecuteReader qui me prend beaucoup de temps.

    Je lance donc le profiler et là je constate que sur ma ligne correspondant à ma requête il y a 856724 reads.

    Je positionne donc cette même requête (récupéré dans le profiler) dans SSMS et là réponse instantanée et au niveau du profiler que 164 reads.

    Comment ne puis-je pas avoir le même résultat au niveau du profiler ? Merci d'avance de votre aide et des pistes que vous pourriez me donner pour comprendre ce phénomène

  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
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Parce que les réglages de contexte ne sont par forcément les mêmes...
    Regardez SET ANSI_DEFAULTS ... et tous les réglages de paramétrage de session connexe (date, langue par exemple).

    Sans la requête difficile de vous aider plus.

    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
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2018
    Messages : 4
    Par défaut
    Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select distinct FBK.NAM
    from FBK
    left join (SELECT CPY,NAM,ID FROM FBK_EQU WHERE STA = 0) EQU ON (FBK.CPY = EQU.CPY AND FBK.NAM = EQU.NAM)
    WHERE FBK.WS = 7 AND EQU.ID IS NULL
    les champ CPY sont des integer dans les 2 tables et les champs NAM sont des nvarchar(32) dans les 2 tables

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Et avec cette syntaxe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select  distinct
            FBK.NAM
    from    FBK
        left join
            FBK_EQU EQU
            on  FBK.CPY = EQU.CPY 
            and FBK.NAM = EQU.NAM
            and EQU.STA = 0
    where   FBK.WS  = 7 
        and EQU.ID  is null
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2018
    Messages : 4
    Par défaut
    Bonjour,

    Avec l'écriture plus simple de la requête comme proposé dans le post précédent, le nombre de lecture reste exactement le même que précédemment.

    Je suis preneur de toute piste. Merci d'avance

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    Je te propose la lecture de l'article suivant qui t'explique comment il est possible que la même requete executée depuis ssms ou depuis l'application n'ait pas les mêmes temps de réponses, cela détaille un peu la réponse de SQL pro.
    http://www.sommarskog.se/query-plan-mysteries.html

    et te donnes des pistes.
    Cordialement
    Soazig

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2018
    Messages : 4
    Par défaut
    Merci beaucoup. Je vais regarder celà

Discussions similaires

  1. [12c] Plan d'exécution sur une seule ligne et illisible
    Par Ikebukuro dans le forum Administration
    Réponses: 0
    Dernier message: 23/04/2017, 13h44
  2. Comment fige t-on le plan d'exécution d'une requête
    Par alexisongagna dans le forum Administration
    Réponses: 4
    Dernier message: 02/01/2013, 17h13
  3. Affichage du plan d'exécution d'une requête
    Par orafrance dans le forum Contribuez
    Réponses: 1
    Dernier message: 30/12/2011, 16h01
  4. Forcer le choix du plan d'exécution d'une requête
    Par hmechbal dans le forum Oracle
    Réponses: 5
    Dernier message: 20/01/2011, 23h28
  5. Réponses: 1
    Dernier message: 27/03/2008, 18h42

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