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

SQL Oracle Discussion :

[10g] Optimiser une requête


Sujet :

SQL Oracle

  1. #21
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    non, je ne vois pas, ce ne serait pas la table distante quie changerait?

    essaye de répérer la ligne qui est mis à jour et regarde si quelque chose à changer

    par exemple avec

    create table i1 as select * from intervention;
    merge blabla...
    select * from intervention minus select * from i1;

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Par défaut
    Non c'est bizarre, la table distante ne peut pas bouger toute les 5s, et j'ai testé avec la table i1 et le minus mais il me retourne "aucune ligne sélectionnée". C'est pas grave, je laisse tomber pour le moment car toutes les maj des autres tables fonctionnent parfaitement.

    J'ai un petit souci pour la dernière table qui me reste à charger.
    Voici le script de chargement initial pour cette table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO temps
    select distinct to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'YYYY'))AS ANNEE,to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'q'))AS TRIMESTRE,to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'MM'))AS MOIS
    from objet@isiparc O,histmvtobj@isiparc H_DEB
    where H_DEB.C_OBJET=O.C_OBJET
    order by ANNEE,TRIMESTRE,MOIS;
    Dans cette table temps, je charge l'année, le mois et le trimestre de la date de début de l'historique.

    Pb : comme cette table n'est pas reliée aux autres tables et qu'elle n'a pas de clé primaire, je n'arrive pas à rédiger mon script de maj avec merge

    Essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MERGE INTO temps c
    	USING (
    		SELECT distinct 
    		to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'YYYY')) col1,
    		to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'q')) col2,
    		to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'MM')) col3
    		FROM objet@isiparc O,histmvtobj@isiparc H_DEB  
    		where H_DEB.C_OBJET=O.C_OBJET
    		) t
               ON
    Je bloque au "ON" car je ne sais pas quoi mettre à l'intérieur

    As tu une solution?

  3. #23
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    MERGE INTO temps c
    	USING (
    		SELECT distinct 
    		to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'YYYY')) col1,
    		to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'q')) col2,
    		to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'MM')) col3
    		FROM objet@isiparc O,histmvtobj@isiparc H_DEB  
    		where H_DEB.C_OBJET=O.C_OBJET
    		) t
               ON (temps.col1=t.col1 and temps.col2=t.col2 and temps.col3=t.col3)
    when not matched then
    insert into (col1,col2,col3) values (t.col1,t.col2,t.col3);

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Par défaut
    J'ai adapté à mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MERGE INTO temps
    	USING (
    		SELECT distinct 
    		to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'YYYY')) col1,
    		to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'q')) col2,
    		to_number(to_char(H_DEB.D_SAISIEMVTOBJ,'MM')) col3
    		FROM objet@isiparc O,histmvtobj@isiparc H_DEB  
    		where H_DEB.C_OBJET=O.C_OBJET
    		) t
    	ON (temps.id_annee = t.col1 and temps.id_trimestre = t.col2 and temps.id_mois = t.col3)
    WHEN NOT MATCHED THEN
    	INSERT (temps.id_annee,temps.id_trimestre,temps.id_mois)
    	VALUES (t.col1,t.col2,t.col3)
    ;

    Mais j'ai une erreur au niveau de la ligne en rouge, je ne comprends pas ce qu'elle signifie :

    ORA-02064 : distributed operation not supported

  5. #25
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    là par contre je ne peux pas trop t'aider... je n'ai pas de quoi tester ta connection remote

  6. #26
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Par défaut
    C'est bon j'ai trouvé un autre moyen, problèmes résolus, merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Optimiser une requête de "classement"
    Par Manu0086 dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/03/2006, 19h47
  2. besoin d'aide pour optimiser une requête
    Par jisse dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2006, 10h41
  3. Optimiser une requête..est-ce possible ?
    Par Thierry8 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/09/2005, 12h31
  4. 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, 21h55

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