Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 创建索引前估算索引大小(dbms_space.create_index_cost)

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
    3145728SQL> create index x_idx on xyc_test(id);索引已创建。
----实际分配大小,这里感觉和估算的相差较大,可能和数据量有关
SQL> select bytes from user_segments where segment_name="X_IDX";
 2097152
  • 1
  • 2
  • 下一页
Oracle 删除重复数据只留一条Oracle 如何查询一个对象的完整定义语句相关资讯      Oracle索引  Oracle dbms 
  • Oracle跳跃式索引扫描测试  (08月09日)
  • Oracle组合索引与回表  (08/07/2015 18:11:53)
  • Oracle 索引基本原理  (04/12/2015 18:03:58)
  • 关于Oracle位图索引内部浅论  (09/17/2015 19:23:59)
  • Oracle 索引的可见与隐藏(visible  (07/18/2015 09:41:42)
  • Oracle索引合并coalesce操作  (04/01/2015 20:21:34)
本文评论 查看全部评论 (0)
表情: 姓名: 字数