您好,欢迎访问一九零五行业门户网

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

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

其它类似信息

推荐信息