sql >> Database teknologi >  >> RDS >> Oracle

Estimerer indeksoprettelsestid i oracle

Oracle kan estimere indeksoprettelsestid og indeksstørrelse med EXPLAIN PLAN kommando:

Eksempelskema

--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);

Resultater

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
 

Noter

Den faktiske oprettelsestid på mit system var 2,5 sekunder sammenlignet med estimat på 10 sekunder. Men det er stadig godt nok, hvis du kun leder efter et skøn over en størrelsesorden. Nøjagtigheden afhænger af at have nøjagtig tabelstatistik samt god systemstatistik . (Men vær forsigtig, før du samler systemstatistik, det kan påvirke mange eksekveringsplaner!) Du kan rode med indstillingerne yderligere ved manuelt at ændre sys.aux_stats$ . Det er en af ​​de få SYS-tabeller, som det er OK at ændre, selvom du stadig skal være forsigtig.



  1. Hvad er der galt med min MySQL CASE/HVORN-syntaks?

  2. Konverter denne forespørgsel til veltalende

  3. Fejl i mysql bigint variabel erklæring inde i brugerdefineret nextval funktion

  4. Hvordan opretter man indekser med betingelser i Oracle 12c?