-- exemple tiré de "Beginning Oracle 11g Administration" par Iggy Fernandez, Apress, 2009 -- script executé avec sys create table mes_tables as select dba_tables.* from dba_tables ; select count(*) from mes_tables; create table mes_index as select dba_indexes.* from dba_tables, dba_indexes where dba_tables.owner = dba_indexes.table_owner and dba_tables.table_name = dba_indexes.table_name; select count(*) from mes_index; -- requete que l'on cherche à optimiser : il n'y a pas d'index -- select distinct mes_tables.owner, mes_tables.table_name, mes_tables.tablespace_name -- from mes_tables, mes_index -- where mes_tables.owner = mes_index.table_owner -- and mes_tables.table_name = mes_index.table_name -- and mes_index.index_type = :index_type; alter session set statistics_level=ALL; set autotrace on statistics; -- connaitre les différents types d'index et leur nombre par type select distinct index_type , count(1) from mes_index group by index_type; variable index_type varchar2(27); exec :index_type := 'NORMAL' ; select distinct mes_tables.owner, mes_tables.table_name, mes_tables.tablespace_name from mes_tables, mes_index where mes_tables.owner = mes_index.table_owner and mes_tables.table_name = mes_index.table_name and mes_index.index_type = 'NORMAL'; -- executions successives pour voir la différence : -- chargement en mémoire ou pas -- vidage du buffer cache ... du cache bibliothèque et ses effets alter system flush buffer_cache; alter system flush shared_pool; -- explication de la trace p412 du fichier pdf -- A VENIR -- utilisation du package dbms_xplan pour analyser le plan d'exécution de la requete SQL -- creation des index -- rebelote sur les tests -- utilisation du SQL Access Advisor (dbms_sqltune) -- utilsation d'autres optimisations et utilisation dbms_stats -- mise en avant du Result Cache (spécifique 11g)