sql >> Base de Datos >  >> RDS >> Oracle

Estimación del tiempo de creación del índice en Oracle

Oracle puede estimar el tiempo de creación del índice y el tamaño del índice con EXPLAIN PLAN comando:

Esquema de muestra

--Create a table with 1 million rows.
drop table table1;
create table table1(a number);
insert into table1 select level from dual connect by level <= 1000000;
--Gather statistics.
begin
    dbms_stats.gather_table_stats(user, 'table1');
end;
/
--Estimate index creation and size.
explain plan for create index table1_idx on table1(a);
select * from table(dbms_xplan.display);

Resultados

Plan hash value: 290895522

-------------------------------------------------------------------------------------
| Id  | Operation              | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | CREATE INDEX STATEMENT |            |  1000K|  4882K|   683   (2)| 00:00:10 |
|   1 |  INDEX BUILD NON UNIQUE| TABLE1_IDX |       |       |            |          |
|   2 |   SORT CREATE INDEX    |            |  1000K|  4882K|            |          |
|   3 |    TABLE ACCESS FULL   | TABLE1     |  1000K|  4882K|   254   (5)| 00:00:04 |
-------------------------------------------------------------------------------------

Note
-----
   - automatic DOP: skipped because of IO calibrate statistics are missing
   - estimated index size: 24M bytes

Notas

El tiempo de creación real en mi sistema fue de 2,5 segundos, en comparación con la estimación de 10 segundos. Pero eso es lo suficientemente bueno si solo está buscando una estimación de orden de magnitud. La precisión depende de tener estadísticas de tabla precisas, así como buenas estadísticas del sistema . (Pero tenga cuidado antes de recopilar estadísticas del sistema, ¡puede influir en muchos planes de ejecución!) Puede jugar más con la configuración modificando manualmente sys.aux_stats$ . Esa es una de las pocas tablas SYS que está bien modificar, aunque aún debe tener cuidado.