oracle - 在oracle中估计索引创建时间

标签 oracle indexing creation

我发现 Oracle 环境中有一些表可以从新索引中受益。
然而,它们是大表,范围从 1M 寄存器到 300M 寄存器,所以我会首先尝试估计创建索引需要多长时间,所以我至少知道它需要的数量级(小时、天、周)?

是否有一些启发式/oracle 功能/经验法则可以帮助我解决这个问题?

最佳答案

Oracle 可以使用 EXPLAIN PLAN 估算索引创建时间和索引大小。命令:

示例架构

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

结果
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

备注

我系统上的实际创建时间为 2.5 秒,而估计为 10 秒。但如果你只是在寻找一个数量级的估计,那仍然足够好。准确性取决于具有准确的表统计信息以及良好的 system statistics . (但是在收集系统统计信息之前要小心,它可能会影响很多执行计划!)您可以通过手动修改 sys.aux_stats$ 进一步摆弄设置。 .这是少数可以修改的 SYS 表之一,尽管您仍然需要小心。

关于oracle - 在oracle中估计索引创建时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3071930/

相关文章:

javascript - 如何使用 javascript 在 html 页面中动态创建元素?

java - jsp下oracle数据库查询没有结果

sql - 使用复合键的WHERE_IN查询?

oracle - 如何插入用户自定义类型列表

java - 未在应用程序的数据库列中设置默认值

arrays - Swift - 数组[任何索引]?

php - Magento CE 1.7 多个 cron 作业的索引计时问题

arrays - Swift 3 比较数组索引

service - Kubernetes:kube-dns 服务创建

php - 额外变量或对象创建——PHP 中什么更好?