Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Szacowanie czasu utworzenia indeksu w Oracle

Oracle może oszacować czas utworzenia indeksu i rozmiar indeksu za pomocą EXPLAIN PLAN polecenie:

Przykładowy schemat

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

Wyniki

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

Notatki

Rzeczywisty czas tworzenia w moim systemie wynosił 2,5 sekundy, w porównaniu z szacunkowym 10 sekundami. Ale to nadal jest wystarczająco dobre, jeśli szukasz tylko oszacowania rzędu wielkości. Dokładność zależy od posiadania dokładnych statystyk tabeli oraz dobrych statystyki systemu . (Ale bądź ostrożny, zanim zbierzesz statystyki systemu, może to wpłynąć na wiele planów wykonania!) Możesz dalej bawić się ustawieniami, ręcznie modyfikując sys.aux_stats$ . To jedna z niewielu tabel SYS, które można modyfikować, chociaż nadal trzeba być ostrożnym.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Plusy i minusy korzystania z pakietów w Oracle

  2. Używasz wielu sterowników Oracle JDBC w jednej aplikacji Java?

  3. Jak sprawić, by to_number ignorowało wartości nieliczbowe?

  4. Narzędzie ADODFCMP

  5. Konwertuj Int32 na liczbę Oracle (5) za pomocą EF4