首页 > 数据库 > mysql教程 > Oracle 创建索引前估算索引大小(dbms_space.create_index_cost)

Oracle 创建索引前估算索引大小(dbms_space.create_index_cost)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 16:46:49
原创
1198 人浏览过

Oracle 创建索引前估算索引大小,在一个表的某个字段创建索引前估算其大小,最好的办法就是在测试库创建索引做预测。如果没有测试

Oracle 创建索引前估算索引大小

在一个表的某个字段创建索引前估算其大小,最好的办法就是在测试库创建索引做预测。如果没有测试环境还可以使用dbms_space.create_index_cost来估算其大小。

语法:

DBMS_SPACE.CREATE_INDEX_COST (
  ddl            IN    VARCHAR2,
  used_bytes      OUT  NUMBER,
  alloc_bytes    OUT  NUMBER,
  plan_table      IN    VARCHAR2 DEFAULT NULL);

示例:

SQL> create table xyc_test (id int,name varchar(32));

表已创建。

SQL> begin
  2  for i in 1..100000 loop
  3  insert into xyc_test values(i,'向银春');
  4  end loop;
  5  commit;
  6  end;
  7  /

PL/SQL 过程已成功完成。

SQL> exec dbms_stats.gather_table_stats(user,'XYC_TEST');

PL/SQL 过程已成功完成。

SQL> variable used_bytes number;
SQL> variable alloc_bytes number;
SQL> exec DBMS_SPACE.CREATE_INDEX_COST('create index x_idx on xyc_test(id)',:used_bytes,:alloc_bytes);

PL/SQL 过程已成功完成。

SQL> print :used_bytes
    500000
----估算分配大小
SQL> print :alloc_bytes
    3145728

SQL> create index x_idx on xyc_test(id);

索引已创建。
----实际分配大小,这里感觉和估算的相差较大,可能和数据量有关
SQL> select bytes from user_segments where segment_name='X_IDX';
  2097152

linux

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
Rails created_at 索引未使用索引
来自于 1970-01-01 08:00:00
0
0
0
Mongodb索引的优化?
来自于 1970-01-01 08:00:00
0
0
0
未定义数组索引:username
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板