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 :

optimisation de procedure stocker


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut optimisation de procedure stocker
    Bonjour,

    Je suis sur un projet qui me demande de créer des procédures stockés.
    Mon Pb est le suivant:
    J'ai créer une procédure qui demande un temps d'exécution mini de14s pour 1000 valeurs.
    cette procédure sera exécuté sur plus de 600 000 valeurs. ce qui va me donner un temps d'exécution faramineux.
    Comment puis je procéder pour optimiser au mieux cette procédure.
    y a t il des outils qui permettent d'optimiser ?

    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    Bonjour,

    avez vous déjà essayé de lancer un plan d'exécution ou d'utiliser le DTA (database tuning advisor) ?

    Christian

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Merci de votre reponse

    Je débute un peu en ce qui concerne les procédure sql.
    Je ne connais pas ces choses la.
    je developpe sous Management studio.
    comment fonctionne vos propositions ?

  4. #4
    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,
    Est-ce que les colonnes sur lesquels portent les filtres sont indéxés.
    Est-ce que les foreigns key sont indéxés.
    Est-ce que les critères de ton where sont sargable
    Voir icihttp://sqlpro.developpez.com/cours/quoi-indexer/

    Si tu veux qu'on t'aide à optimiser ta procédure stockée, il va falloir que tu nous donnes plus d'informations.
    Ton modèle de données, ta procédure stockée, les index, la volumétrie.

    Parce que sinon c'est un peu vague comme question.
    PS : Database tuning advisor plus d'information http://blog.developpez.com/mikedavem...itaire-dta-ex/

    Pour le plan d'execution c'est ici ou
    A+
    Soazig

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    Bonsoir,

    il est en effet nécessaire de lire tous ces articles, plus la documentation en ligne de SQL Server si nécessaire. Merci Soazig pour tous ces liens
    Si vous regardez le plan d'exécution, déjà vous aurez une indication sur les index manquants, il faut apprendre à lire un plan d'exécution, d'où les aides en ligne. Sinon le DTA le fera pour vous si vous ne maîtrisez pas encore la création d'index en fonction de votre code. Examinez bien ce qu'il vous propose comme solution.

    Vous pouvez en effet nous envoyer votre code et votre schéma de données afin que l'on puisse mieux vous aider là dessus.

    Christian

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'ajouterais aussi que l'emploi de curseur est souvent très pénalisante dans un procédure...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Bonjour,

    Merci de votre aide a tous.
    en reponse un peu a soazig

    Est-ce que les colonnes sur lesquels portent les filtres sont indéxés.
    -> non
    Est-ce que les foreigns key sont indéxés.
    -> je ne pense pas
    Est-ce que les critères de ton where sont sargable
    -> si j'ai bien compris les articles, non plus.

    en effet je n'ai pas creer la base de donnée, ni les table sur lesquelles je m'attaque.
    Et je ne pense pas pouvoir modifier quoique ce soit sur ces table.

    concernant mes nombreuse clause where, elle se constitu generalement sur un substring. en plus de ca, je fait un count sur toute mes requete.
    pour plus de precision, je vais (essayer de) faire une explication sur ma requete.

    - ma premiere table est composer (sur ce qui m'interresse) d'une colonne idclient puis plusieurs colonnes sur des resultat de questionnaire. ces resultat sont interpreter par des 0 et 1 (oui ou non)

    1 : ma premiere requete consiste a compter le nombre de 0 et sur chaque ligne et prendre le max :
    select Max (len (col1 + col2 ....+ colx))

    le nombre donnée me donne le nombre d'iteration (nb de question) pour lequel je vais compter le nombre de reponses de chaque.

    2 : sur chaque question, je fait un comte de ceux qui on repondu a la question

    vaguement ca fait un
    select count(idclient)
    from db_client inner join db_questionnaire
    on db_client.idclient = db_questionnaire.idclient
    Where (une condition)

    3 : j'insere (ou plutot update) une table temporaire pour exploiter le resultat plus tard.

    4 : apres la fin de literation je fait juste un select sur la table temporaire

    Voila, j'espere que mes explication ont ete clair.
    et que quelqu'un pourras m'aider.

    Merci d'avance.

  8. #8
    Invité
    Invité(e)
    Par défaut
    ça serait pas plus simple de nous copier la procédure au lieu de nous l'expliquer?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Je comprend et je m'attendais a cette demande.
    Mais je n'ai pas le droit de sortir d'information de ma boite.
    Et comme je viens de commencer mon nouvelle emploi, je ne veux pas m'y risquer.
    Merci de votre compréhension.
    plus ou moins graphiquement j'ai la table suivante :

    idclient | quesiton | age | ville
    client1 | 0100101110101101 | 12 |
    client2 | 0100010011001101 | 32 |
    client3 | 1001010110101101 | 25 |
    client4 | 0101001101011101 | 45 |

    et je veux savoir combien on un 1 en debut de chaine, combien on un 1 en 2e position de chaine ...
    sachant que je faire des Where sur l'age, puis la ville ...

  10. #10
    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,
    Vu les réponses aux questions relatives aux index.
    Avec une volumétrie plus importantes, les performances vont se dégrader et ta PS mettra plus de temps. Puisque tu as lu les tuto, tu as compris pourquoi

    Si on t'interdit de créer des index sur les tables, alors comme nous ne sommes pas magicien nous ne pouvons pas t'aider. Cela dit commence par demander si c'est possible ou pas, car cela me surprend grandement.

    Cordialement
    Soazig

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. procedure stocker ,commit, trigger
    Par rec82 dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/04/2009, 11h07
  2. Procedure stocker avec toad
    Par lightzeus dans le forum Toad
    Réponses: 4
    Dernier message: 25/10/2007, 16h33
  3. Procedure Stocker de création de fichier texte
    Par sheura dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/02/2007, 16h54
  4. Comment utiliser une Procedure Stocker depuis vb6 ?
    Par Tops dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/02/2007, 09h58
  5. Réponses: 8
    Dernier message: 03/11/2005, 08h51

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