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 :

Insert très, très long


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Par défaut Insert très, très long
    Bonjour,

    Je travaille en VB6 et avec SQL-SERVER 8

    J'ai fait une stored procedure qui exécute une série de requête, pour aboutir avec une table temporaire ##, table qui sera lue par mon programme VB6.

    Mais voilà, la stored procedure est très longue à exécuter, elle prend entre 20 et 30 secondes. C'est beaucoup trop long.

    (Petite parenthèse, je suis déçu, je croyais que l'exécution côté serveur était plus rapide, mais c'était plus rapide quand je faisais une longue et exténuante série de if then else en VB6 enfin....)

    Bref, afin de m'aider à optimiser ma stored, j'ai copié le contenu de ma stored dans le Query Analyser et je fais afficher le "estimated execution plan" qui me permet de rapidement repérer la ou les requêtes plus lente.

    J'ai trouvé la requête. Il s'agit d'un petit insert de rien du tout.

    Je commence par vous montrer la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    insert into #pcRabais3
    select ddmarq, ddform, ddgrou, dtype, btbann, c1sem, valBPCS 
    from #pcRabais1 
    	join #TableDate b on (b.c1sem between semdebut and semfin)
    La table #TableDate ne contient que 52 enregistrements, un pour chaque semaine, et n'a que deux champs, soit c1year et c1sem. J'ai mis un index clustered sur les deux champs.

    La table #pcRabais1 contient en revanche environ 25'000 enregistrements (varie dépendant des clients). J'ai mis un index sur tout ses champs texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE  INDEX [IndexPhysique] 
    	ON [dbo].[#pcRabais1]([ddmarq], [ddform], [ddgrou], [dtype], [btbann]) ON [PRIMARY]
    Le insert prend 63% du temps d'exécution total de la stored, donc environ 15 seconde. Dans le estimated execution plan, j'ai vu à quel endroit la requête prend le plus de temps. Il s'agit d'un sort. Il prend à lui seul 74% du temps d'exécution de la requête. Lorque je regarde les arguments de cette étape, c'est écrit :

    ORDER BY: ([#pcRabais1].[ddmarq] ASC, [#pcRabais1].[ddform] ASC, [#pxRabais1].[ddgrou] ASC, [#pcRabais1].[dtype] ASC, [#pcRabais#].[btbann] ASC, [#tabledate].[c1sem] ASC)
    Ma question finalement... POURQUOI est-ce que l'insert est aussi long et POURQUOI est-ce que la requête génère un SORT alors que je n'ai aucun order by...

    Je vous remercie pour le temps que vous prendrez à me répondre.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut desactivation des index
    salut,

    je ne sais pas si cela peut t'aider mais lors d'insertion en lot de grande taille, on recommande de desactiver tout les index avant l'insertion et de les reactiver apres l'insertion... c'est plus rapide...

Discussions similaires

  1. BDD sur réseau très très très lent...
    Par ericain dans le forum Access
    Réponses: 12
    Dernier message: 20/02/2015, 18h17
  2. newSchema(url) exécution très très très lente
    Par schum-hacker dans le forum Général Java
    Réponses: 6
    Dernier message: 21/01/2013, 10h32
  3. Logiciel intranet très très très lent
    Par openeyes dans le forum ALM
    Réponses: 7
    Dernier message: 15/02/2011, 16h16
  4. Améliorer les performances - très (très) (très) grands datasets
    Par debdev dans le forum Administration et Installation
    Réponses: 6
    Dernier message: 08/01/2010, 17h46
  5. Démarrage trés, trés, trés difficile
    Par Cazaux-Moutou-Philippe dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 29/06/2008, 11h45

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