Estimer la taille d'un index avant de le créer

Supposons que vous vouliez créer un index comme ceci :

create index emp_zz on emp(empno,sal,comm)

Vous pouvez estimer la taille de l’index et la taille du segment grâce au package DBMS_SPACE comme ci-dessous :

var v_used_bytes number
var v_alloc_bytes number
var v_sql char(50)
exec :v_sql:='create index emp_zz on emp(empno,sal,comm)'
exec dbms_space.create_index_cost(:v_sql, -
:v_used_bytes, -
:v_alloc_bytes)
print :v_used_bytes
print :v_alloc_bytes

V_USED_BYTES
------------
140

V_ALLOC_BYTES
-------------
65536

Une nouveauté 10g (oui 10g !) #CQFD