Bonjour
Je suis développeur d'une application qui permet de consulter une table contenant beaucoup de données via une IHM qui ressemble à un tableau Excel.
Sur chaque colonne du tableau (c'est à dire de la table) l'utilisateur peut appliquer un tri et/ou un filtre sur une valeur donnée (ex. : n'afficher que les lignes pour lesquelles le montant vaut 100).
L'utilisateur peut créer des tris et des filtres sur autant de colonnes qu'il le désire (au plus 1 critère de filtre et un critère de tri sur une colonne donnée).
De plus, les colonnes affichées ou non sont également au bon vouloir de l'utilisateur.
La requête sous-jacente est donc complètement dynamique et n'a rien de fixé : ni la liste des colonnes du SELECT, ni la clause WHERE ni la clause ORDER BY !
Du coup, je ne sais pas comment je pourrais optimiser quoi que ce soit et surtout éviter que ces requêtes (toujours différentes de l'une à l'autre) s'accumulent dans la SHARED_POOL, ce qui produit très rapidement un message du style
ORA-04031 : unable to allocate 8716 bytes of shared memory ("large pool", "unknown object","cursor work he","kllqas:kllsltba" )
N'étant pas un spécialiste Oracle, pardon par avance si mon exposé n'est pas très clair ou qu'il y a confusion de plusieurs notions.
Votre aide me serait infiniment précieuse !
Merci d'avance !
PS
La version d'Oracle est la 8i, attaquée depuis une couche ADO.