ในการวัด (สิ่งที่ฉันเชื่อว่าคุณเข้าใจ) การจัดสรรและใช้ขนาดของดัชนีฉันอาจใช้ dbms_space
create or replace procedure tq84_index_size_proc 
as
  OBJECT_OWNER_in         varchar2(30) :=  user;
  OBJECT_NAME_in          varchar2(30) := 'TQ84_SIZE_IX';
  OBJECT_TYPE_in          varchar2(30) := 'INDEX';
  SAMPLE_CONTROL_in       number       :=  null;
  SPACE_USED_out          number;
  SPACE_ALLOCATED_out     number;
  CHAIN_PCENT_out         number;
  SUM_SEGMENT             number;
begin
  dbms_space.object_space_usage (
    OBJECT_OWNER           => OBJECT_OWNER_in        ,
    OBJECT_NAME            => OBJECT_NAME_in         ,
    OBJECT_TYPE            => OBJECT_TYPE_in         ,
    SAMPLE_CONTROL         => SAMPLE_CONTROL_in      ,
    SPACE_USED             => SPACE_USED_out         ,
    SPACE_ALLOCATED        => SPACE_ALLOCATED_out    ,
    CHAIN_PCENT            => CHAIN_PCENT_out
  );
  select sum(bytes) into SUM_SEGMENT 
    from user_segments
   where segment_name = OBJECT_NAME_in;
  dbms_output.put_line('Space Used:      ' || SPACE_USED_out);
  dbms_output.put_line('Space Allocated: ' || SPACE_ALLOCATED_out);
  dbms_output.put_line('Segment:         ' || SUM_SEGMENT);
end;
/
ขั้นตอนนี้วัดขนาดที่จัดสรรและใช้แล้วของดัชนีชื่อ * TQ84_SIZE_IX * user_segmentsเพื่อประโยชน์ครบถ้วนผมยังได้เพิ่มจำนวนไบต์ตามการรายงานของ
ตอนนี้ขั้นตอนนี้สามารถมองเห็นได้ในการดำเนินการ:
create table tq84_size (
  col_1 varchar2(40),
  col_2 number
);
create index tq84_size_ix on tq84_size(col_1);
insert into tq84_size values ('*', 0);
commit;
exec tq84_index_size_proc;
ด้วยหนึ่งรายการในดัชนีตัวเลขต่อไปนี้จะถูกส่งคืน:
Space Used:      1078
Space Allocated: 65536
Segment:         65536
เติมดัชนี ...
insert into tq84_size 
select substr(object_name || object_type, 1, 40),
       rownum
  from dba_objects,
       dba_types
 where rownum < 500000;
commit;
... และรับตัวเลขอีกครั้ง ...
exec tq84_index_size_proc;
... รายงาน:
Space Used:      25579796
Space Allocated: 32505856
Segment:         32505856
จากนั้นหากดัชนีเป็น "ว่าง":
delete from tq84_size;
commit;
exec tq84_index_size_proc;
มันแสดงให้เห็น:
Space Used:      4052714
Space Allocated: 32505856
Segment:         32505856
ซึ่งแสดงให้เห็นว่าขนาดที่จัดสรรไม่หดตัวขณะที่ขนาดที่ใช้ทำ