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é:
- 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 ...- 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 ...- 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.
@+
Partager