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

Langage SQL Discussion :

[SQL Server] tables temp : comment améliorer mon traitement


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 11
    Points
    11
    Par défaut [SQL Server] tables temp : comment améliorer mon traitement
    Bonjour !
    Je dois actuellement réaliser le traitement suivant sous sql server 2000 :

    A partir de la table source (id est une clé primaire) :
    id b c
    ----------- ----------- -----------
    1 2 3
    2 2 3
    3 2 3
    4 4 4
    5 4 4


    Je dois obtenir la table faits(facile jusque la) :
    id_fait est une clé autoincrémentée
    id_fait b c
    ----------- ----------- -----------
    1 2 3
    2 4 4


    Puis la table piste(c'est la que j'ai des problèmes):
    id_fait id
    ----------- -----------
    1 1
    1 2
    1 3
    2 4
    2 5


    En gros je dois regrouper les enregistrements par colonne b et c en rajoutant une clé autoincrémentée. Je dois ensuite créer une table qui associe les id_fait aux id. (je ne sais pas si j'ai été clair ?)

    La seule méthode que j'ai trouvé pour la table piste est la suivante :

    Je crée une table de faits temporaire et je fait une jointure avec la table source sur l'intégralité des critères d'agrégation (ici les colonnes b et c)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    insert into #tmp_faits (b,c)
    select b,c 
    from #source 
    group by b,c
     
     
    insert into piste
    select id_fait,id
    from #tmp_faits f
    inner join #source s on f.b=s.b and f.c=s.c

    Ca fonctionne mais à cause de la volumétrie et du nombre important de critères d'agrégations, le traitement devient trop long. J'ai pas mal réfléchi au problème mais je ne vois pas de solution. Quelqu'un aurait-il une solution plus adaptée ?
    D'avance merci et joyeux Noël à tous !
    Mathieu

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 080
    Points : 30 763
    Points
    30 763
    Par défaut
    Je vois difficilement comment faire plus simple et plus efficace...
    à moins que ce que tu nous présentes soit extrèmement par rapport à la réalité
    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.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    D'accord. Merci pour ton aide.

    En réalité, il y a une vingtaine de critères d'agrégation mais rien de fondamentalement différent.

    Bon. Dans ce cas tant pis. J'avais demandé car un collègue m'a dit que les tables temporaires sont lentes et à éviter dans la mesure du possible. Je suis encore assez novice en sql et j'avais peur d'être passé à coté d'une solution plus simple et/ou efficace.

    Bonne journée

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/01/2015, 16h32
  2. [SQL Server 2005 Express] Comment lister les tables SQL ?
    Par kinsoi117 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/11/2007, 12h47
  3. Projet ADP + SQL Server : tables en lecture seule
    Par hannii dans le forum Access
    Réponses: 8
    Dernier message: 09/03/2007, 15h16
  4. [Sécurité] Comment amélioré mon code ?
    Par Nadd dans le forum Langage
    Réponses: 14
    Dernier message: 03/03/2006, 21h13
  5. [SQL SERVER] Table contient trop d'enregistrements ?
    Par Tankian dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 10/08/2004, 11h40

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