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 :

Problème de performances d'une procédure stockée


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut Problème de performances d'une procédure stockée
    Bonjour à tous,

    je me permets de vous contacter car j'ai un problème de performance avec l'exécution d'une procédure stockée.

    Actuellement,j'ai une procédure qui prend en entrée plusieurs paramètres:
    - @Id INT,
    - @MD MD READONLY,
    - @Ids NVARCHAR(MAX) OUTPUT

    Cette procédure a pour but de traiter les données de la table valued @MD.
    Pour chaque élément de cette table valued, je fais une boucle while dans laquelle je fais plusieurs traitement:
    - Un ensemble de select sur ma base de données. Suivant les résultats j'affecte à des variables des valeurs différentes
    - Une insertion dans une table de ma base avec les valeurs récupérées juste avant.
    - Je récupère la clé primaire à l'aide de SET @Tid = (SELECT @@IDENTITY)
    - Dans ma variable @Ids de sortie je concatène les clés primaires séparées par une virgule
    SET @Ids = (SELECT CONCAT(@Ids, @Tid, ','))

    En résumé pour chaque ligne de ma table valued je fais un certain nombre de traitements puis je fais une insertion en base.

    Je pense que les problèmes de performances peuvent venir du fait que j'insère ligne par ligne au lieu de faire un seul insert.
    Pensez vous que cela vient de ça?

    De plus, si ça peut venir de là, je ne vois pas comment faire une seule insertion, étant donné que je dois pourvoir retourner l'ensemble des clés primaires créées.
    Avez vous une idée?

    Je vous remercie d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Montre nous directement le code, parce qu'optimiser de l'abstraction, ça risque d'être sexy !
    Est-ce qu'il y a des curseurs dedans ?

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour

    Citation Envoyé par nessaure Voir le message
    De plus, si ça peut venir de là, je ne vois pas comment faire une seule insertion, étant donné que je dois pourvoir retourner l'ensemble des clés primaires créées.
    Pour ça, vous pouvez utiliser la clause OUTPUT.

    Pour l'optimisation, comme déjà dit, difficile d'optimiser du code... sans avoir le code !

  4. #4
    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
    Citation Envoyé par nessaure Voir le message
    Je pense que les problèmes de performances peuvent venir du fait que j'insère ligne par ligne au lieu de faire un seul insert.
    Pensez vous que cela vient de ça?
    Dans tous les cas, OUI !

    De plus, si ça peut venir de là, je ne vois pas comment faire une seule insertion, étant donné que je dois pourvoir retourner l'ensemble des clés primaires créées.
    La solution : formation + imagination !!!

    Avez vous une idée?
    OUI !

    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/ * * * * *

  5. #5
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Bonjour,

    Avec le code c'est mieux ...

    Quelques pistes :

    Etant donné que vous utilisez beaucoup de paramètres j'essaierais d'ajouter un Hint : option (recompile) après chaque select afin que l'optimiseur cherche à effectuer les requetes avec un plan correcte et non pas imaginé avec des valeurs fausses en se basant sur la dernière execution qui s'est dérouler avec d'autres parametre et dont les critères de recherches sont completements différents ...

    Essayez de mettre a jour vos statistiques aussi pour voir ...

  6. #6
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut
    Bonjour à tous,

    merci pour vos réponses. Je n'utilise pas de curseurs, et je vais essayer de regarder vos pistes.
    Si je n'y arrive pas, j'essayerai de mettre un copié/collé du code, mais la procédure est très longue (environ 500 lignes ...).

    Citation Envoyé par SQLpro Voir le message
    Dans tous les cas, OUI !



    La solution : formation + imagination !!!



    OUI !

    A +
    Super ! Merci pour cette construction, j'espère que ça ne t'a pas pris trop de temps, je m'en voudrais.
    Au passage formation + imagination = carnage très souvent :-)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nessaure Voir le message
    Si je n'y arrive pas, j'essayerai de mettre un copié/collé du code, mais la procédure est très longue (environ 500 lignes ...).
    Euh, relativisons quand même, 500 lignes de codes commentés, c'est juste une procédure un peu longue mais pas très longue.

  8. #8
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Euh, relativisons quand même, 500 lignes de codes commentés, c'est juste une procédure un peu longue mais pas très longue.
    Ah désolé je ne connais pas bien ; pour moi ça me semble très long :-)

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/04/2014, 20h04
  2. Réponses: 3
    Dernier message: 01/12/2006, 13h58
  3. Réponses: 1
    Dernier message: 20/07/2006, 18h03
  4. Réponses: 4
    Dernier message: 16/12/2005, 17h25
  5. Problème Alter view dans une procédure stockée
    Par adjava dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2005, 18h45

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