Oracle dapat memperkirakan waktu pembuatan indeks dan ukuran indeks dengan EXPLAIN PLAN
perintah:
Contoh Skema
--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);
Hasil
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
Catatan
Waktu pembuatan sebenarnya di sistem saya adalah 2,5 detik, dibandingkan dengan perkiraan 10 detik. Tapi itu masih cukup bagus jika Anda hanya mencari perkiraan urutan besarnya. Akurasi tergantung pada statistik tabel yang akurat serta statistik sistem
. (Tapi hati-hati sebelum Anda mengumpulkan statistik sistem, ini dapat mempengaruhi banyak rencana eksekusi!) Anda dapat mengutak-atik pengaturan lebih lanjut dengan memodifikasi sys.aux_stats$
secara manual . Itu salah satu dari beberapa tabel SYS yang boleh dimodifikasi, meskipun Anda tetap harus berhati-hati.