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 :

[SQL2005]Optimisation de requête


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Par défaut [SQL2005]Optimisation de requête
    Bonjour à tous, amis SQLeur

    Je viens faire appel à vos connaissances car je bloque sur une requête.

    je vous présente le problème :

    Je fais un petit Datawarehouse et j'ai besoin d'affecter des clés de substitution à certains enregistrement.

    Je me lance donc dans l'aventure et je veux assigner une clé de substitution à chaque date pour une dimension temps.

    J'ai déjà créé une table reprenant une échantillon de date s'étalant sur deux ans et je leur fait correspondre une clé de substitution. Cela donne par exemple

    DATE - Clé
    1/1/2007 - 1
    27/1/2007 - 27


    Mais ou est le problème la dedans???!!!

    Et bien par exemple je possède une table de vente avec des dates, et je veux faire correspondre à chaque date la clé de substitution correspondante. Je vais donc aller chercher la valeur correspondante dans la table que j'ai déjà créée, MAIS ca me prend énormément de ressources et de temps... Pour vous dire, après 1 minutes à peine 1000 enregistrements ont été traités...

    Ma question est donc : n'y-a-t'il pas un moyen rapide et économique de faire la correspondance pour assigner rapidement une clé de substitution à chaque date dans une table???

    Voila le code pour que vous compreniez mieux ce que je veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    declare @DateVente datetime --Date réelle de la vente
    declare @i int  --le traditionnel compteur 
    declare @tempsSubstitution int --la clé de substitution
     
    set @i = 1
     
     
    while @i < 97305 -- Nombre d'enregistrement
        begin
        set @DateVente = (select distinct date from fait_Vente Where ID_Vente = @i) -- Je fais un distinct car ma table fait vente est une fusion de deux tables.. je n'ai pas de clé primaire dedans donc nous pouvons avoir plusieurs ID_Vente égaux... J'ai fusionné les tables Vente et Ligne_Vente
        set @TempsSubstitution = (Select ID_Temps from reference_temps where date_temps = @Datevente
        Update fait_vente
        set ID_Temps = @TempsSubstitution where ID_vente = @i
        set @i = @i +1
    end
    )
    MERCI d'avance en tout cas de vous pencher sur mon cas

    A bientot,

    Matt

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    un truc dans cee style devrait fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create table #tmp
    (id_temps_tmp int identity(1,1),
    datevente datetime)
     
    insert into #tmp (datevente) SELECT [date] FROM fait_Vente group by [date]  
     
    UPDATE fait_vente
        SET ID_Temps =id_temps_tmp from #tmp where datevente=[date]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Par défaut
    Salut !

    génial ,a marche super bien, meme pas 5 seconde pour 100 000 enregistrements

    Merci,

    A++

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

Discussions similaires

  1. [Access] Optimisation performance requête - Index
    Par fdraven dans le forum Access
    Réponses: 11
    Dernier message: 12/08/2005, 14h30
  2. Optimisation de requête avec Tkprof
    Par stingrayjo dans le forum Oracle
    Réponses: 3
    Dernier message: 04/07/2005, 09h50
  3. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55
  4. optimisation des requêtes
    Par yech dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/09/2004, 19h03
  5. Optimisation de requête
    Par olivierN dans le forum SQL
    Réponses: 10
    Dernier message: 16/12/2003, 10h09

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