jeudi 24 mai 2012

Optimisation Oracle Index et tables

Bonjour,

Je viens de découvrir les ordres des requêtes SQL qui permettent d’optimiser les tables et index d'une table.

Cela permet via script (automatique) et par exemple suite a de grosse opération de mise a jour (update / delete), de restructurer la table en question.
select 'ALTER INDEX ' || index_name || ' REBUILD;' from user_indexes  where table_name = 'MA_TABLE';
select 'ANALYZE INDEX ' || index_name || ' VALIDATE STRUCTURE;' from user_indexes  where table_name = 'MA_TABLE';
Analyze Table MA_TABLE Estimate Statistics;

A la fin du script permet de tout mettre tout propre ^^

Voila en espérant que ces instructions puisse vous aidez.
Par contre, ce que je n'ai pas fait (par manque de temps) est le Benchmark de ses actions pour savoir le gain. Il aurait fallut analyse les performances avant la mise a jour des index/tables et après l'opération pour avoir le rapport de performance.
Dans tous les cas, cela ne peux pas faire de mal :)

vendredi 4 mai 2012

Concaténation Oracle

Bonjour a tous, Une petite astuce en Oracle pour concaténer des lignes sous forme de "Champs" (champ1, champ2...). Il suffit d'utiliser une fonction présent dans les fonctions d'oracle : wmsys.wm_concat avec un group by Comme cela :
select wmsys.wm_concat(libelle) as LIBELLE, max(date_creation) as MA_DATE, CHIFFRE
from maTable
where critere = 1
and critere2 in (1,2,3)
group by CHIFFRE
Le résultat
LIBELLE MA_DATE CHIFFRE
-------- ------------------- ----------
aa,bb,cc 2007-11-19 44000