Bonjour à tous !
J'ai une question optimisation Oracle à vous poser !
Je dois réaliser, via une vue, de multiples requêtes sur une autre vue (BigVue) assez lente d'exécution ; les contraintes m'empêchent de passer par des procédures stockées.
Pour optimiser les perfs, je pensais requêter une fois BigVue, mettre le résultat en cache, puis réaliser ma ribambelle de requêtes sur ces données en cache.
Pour ce faire, j'ai fais un truc du genre :
Code :
- with cur_VUE as (select parametre1, parametre2 from BigVue)
- SELECT nvl(COUNT(*),0) as Val
- FROM cur_VUE
- WHERE parametre1 = valeur1
- union all
- SELECT nvl(COUNT(*),0) as Val
- FROM cur_VUE
- WHERE parametre2 = valeur2
|
Cependant ça n'a pas l'air de fonctionner, je me prends un ORA-04031, est-ce uniquement un manque de mémoire partagée, ou y-a-t-il quelque chose qui ne va pas dans cet exemple ?
Avez-vous une proposition pour réaliser ceci de manière plus propre ?
D'avance merci pour vos retours !
++ Nrv