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 :

Résultats intermédiaires pour scinder un Select trop long


Sujet :

MS SQL Server

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Résultats intermédiaires pour scinder un Select trop long
    Je reprends une application où une des procédures stockées demande un temps de temps très long.

    Elle est composé d'un Select.
    Ce Select est lui même composé de deux select principaux, le premier est lié au second par un Left Outer Join.
    Chacun de ces deux Select est lui-même composé de Select imbriqués et d'un Pivot.

    Si j'exécute séparément chacun de Select principaux j'obtiens un temps de réponse de moins d'une minute (pour 2 millions d'enregistrements lus)
    Si je les exécute ensemble avec le left outer Join je dépasse de quart d'heure.

    J'avais pensé exécuter le premier Select et conserver son résultat, exécuter le second et conserver le résultat et faire ensuite une requete sur les deux résultats intermédiaires.
    Cela aurait aussi donné un code plus clair.
    Ma question est de savoir comment conserver ces résultats intermédiaires sans créer si possible de table temporaire.
    Avec Un With la seconde requête éfface le résultat de la première
    Avec un Cursor je ne sais pas écrire un select lisant un Cursor

    Merci d'avance de vos remarques

  2. #2
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Un conseil (pour m'être débattue avec pendant plusieurs jours afin d'optimiser le temps de traitement de requêtes) évite les curseurs, ça prend moulte fois plus de temps qu'une table temporaire.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Je sais que cela n'a pas très bonne réputation
    Sinon question stupide pour créer une table temporaire je fais un create table et ensuite un Insert Select ?

  4. #4
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Oui, tu créés ta table comme une table normale mais n'oublie pas de la supprimer à la fin de ta procédure

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Je suis allé sur le forum et j'ai trouvé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       select sum( [11] ) as TotalSp  INTO #tmpMontant  from  (etc...
    Effectivement j'ai fait un drop en fin de procédure
    C'est assez dingue : de plus d'un quart d'heure je suis retombé à 1 minute environ.
    Merci pour votre aide

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

Discussions similaires

  1. Scinder un texte trop long d'une cellule en plusieurs cellules
    Par Jimmatdycol dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/02/2014, 10h33
  2. Temps de traitement select trop long
    Par David79 dans le forum Requêtes
    Réponses: 1
    Dernier message: 19/05/2013, 11h37
  3. Réponses: 4
    Dernier message: 26/11/2010, 09h23
  4. [PHP 5.0] Scinder les mots trop longs d'une chaine
    Par Angel31 dans le forum Langage
    Réponses: 12
    Dernier message: 21/09/2009, 17h07
  5. [Conversion]Comment faire pour couper un Double trop long?
    Par dessinateurttuyen dans le forum Général Java
    Réponses: 1
    Dernier message: 13/11/2005, 02h22

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