2010-05-11 2 views
0

J'ai un programme Java exécutant 3 sqls séparés avec une même vue en ligne - il faut environ 20 minutes chaque fois pour construire la vue en ligne lorsque les sqls sont exécutées - existe-t-il un moyen de le mettre en cache ou de le réutiliser? - essayer d'éviter une solution de table temporaire car elle doit être déléguée à un plsql car le programme java n'a pas le droit de créer des objets de schéma. ps: oracle 10gles vues en ligne peuvent être utilisées pour les instructions java au lieu de créer une table temporaire

Répondre

0

Oracle fera de son mieux pour mettre en cache le résultat si vous le laissez. Mais vous pouvez toujours avoir une table temporaire si vous le voulez vraiment, et c'est assez petit. Si vous utilisez un paquet, vous pouvez créer la table temporaire la première fois qu'il est appelé et utiliser les données en cache les deux autres fois - essayez les variables du paquet et voyez si cela fait ce que vous voulez.

0

Les tables temporaires Oracle ne doivent pas être créées à la volée. Docs here. Si vous utilisez une table temporaire pour cela, créez-la une fois et utilisez-la dans la procédure.

Une autre option peut être une vue matérialisée. Docs here. La vue matérialisée serait soit rafraîchie sur demande ou sur un calendrier.

Avec les informations données, il n'est pas possible de vous dire lequel correspondrait le mieux à votre situation.

+0

utilisaient des procédures plus tôt pour créer et supprimer des tables temporaires à la volée avant de passer à des vues en ligne - le basculement était en grande partie dû à des problèmes dans l'environnement de développement d'équipe partageant une DB! ajouter à cela est que le programme est exécuté dans 10 threads parallèles pour différentes gammes de données - pour planifier maintenant de revenir à des tables temporaires comme le développement est fait et maintenant sa performance - peut être 11g RESULT_CACHE indice est la réponse? – prabhackar

+0

La création et la suppression de tables temporaires globales dans Oracle provoquent des problèmes. Si vous les utilisez, laissez-les dans la base de données. Cela vous évitera de devoir créer des objets. Et toutes les données qu'ils contiennent sont spécifiques à la session et tronquées à la fin d'une transaction ou d'une session. Donc pas besoin de les laisser tomber. –

Questions connexes