[Oracle] Factoriser de multiples requêtes sur la même vue

Factoriser de multiples requêtes sur la même vue [Oracle] - SQL/NoSQL - Programmation

Marsh Posté le 21-08-2009 à 14:12:36    

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 :
  1. with cur_VUE as (select parametre1, parametre2 from BigVue)
  2. SELECT nvl(COUNT(*),0) as Val
  3. FROM cur_VUE
  4. WHERE parametre1 = valeur1
  5. union all
  6. SELECT nvl(COUNT(*),0) as Val
  7. FROM cur_VUE
  8. 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 ;)

Reply

Marsh Posté le 21-08-2009 à 14:12:36   

Reply

Marsh Posté le 24-08-2009 à 08:31:41    

ta requete étant syntaxiquement correcte l'erreur renvoyée par oracle semble être la bonne, mais tu pourrais pas faire une requete du style:
 

Code :
  1. SELECT  sum(decode(parametre1,valeur1,1,0)) AS count_valeur1,
  2.        sum(decode(parametre2,valeur2,1,0)) AS count_valeur2
  3. FROM big_vue


 
En fait si ta table est vraiment énorme ce n'est pas sur qu'il y ait un gros intérêt a utiliser un with, car il n'arrivera peut-etre pas a tout stocker dans son cache et donc risque de swapper ses pages a crever, de plus tu ne profiteras a priori d'aucun index.
Mais il faut voir avec ton jeu de donnée et ton sql réel, la tu l'as un peu trop simplifié que pour appréhender tous les mécanismes.
 
 
 

Reply

Marsh Posté le 28-08-2009 à 16:26:34    

Tout dépend du cadre mais tu ne peux pas utiliser une vue matérialisée ?


---------------
Like a flower bending in the breeze, bend with me, sway with ease. When we dance you have a way with me, stay with me, sway with me.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed