Bonjour.

Je cherche la meilleure méthode pour créer une table à partir d'une requête. La requête en question ramène de très volumineux résultats. La table où seront stoqués les résultats aura son propre tablespace.

Voici les méthodes que j'ai trouvé:

  1. La méthode la plus connue (Gourmand en utilisation du tablespace temporaire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE TABLE RESULTATS AS SELECT ...
  2. Une autre méthode assez connue (Gourmand en utilisation du tablespace temporaire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    -- En admettant que la table a été crée au paravant:
    INSERT INTO RESULTATS SELECT ...
  3. Par curseur interposé (Plus lent que les 2 prmières, mais n'utilise pas le tablespace temporaire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    -- On admettra aussi que la table a déjà été crée
    -- On pourra tout aussi bien faire un WHILE en utilisant FETCH pour parcourir le curseur
    FOR C IN (SELECT...) LOOP
        INSERT INTO RESULTATS VALUES (C.COL1, C.COL2, ...);
    END LOOP;


Bon voilà ce que j'ai trouvé. Evidemment je pourrais déclarer une vue, mais celà ne m'intéresse pas, sauf si il est possible de faire une vue fixe, c'est à dire sans qu'elle ne prenne en compte les modifications futures dans les tables concernées par la requête.

Y aurait-il d'autres méthodes plus rapides? Le problème est qu'il ne faut pas que le tablespace temporaire soit utilisé, ou qu'il soit très peu utilisé, comme dans la 3ème méthode.

Merci d'avance.
@+