中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
索引为什么比表大--简单的CaseStudy
作者:佚名 时间:2004-07-08 10:40 出处:互连网 责编:chinaitpower
              摘要:索引为什么比表大--简单的CaseStudy

  SQL> @testcase2
  SQL> CREATE SEQUENCE SEQ
    2 /
   
  Sequence created.
   
  SQL> 
  SQL> DROP TABLE TESTFORIND
    2 /
   
  Table dropped.
   
  SQL> 
  SQL> CREATE TABLE TESTFORIND(ID NUMBER,VALUE VARCHAR2(20));
   
  Table created.
   
  SQL> 
  SQL> BEGIN FOR X IN 1..100000 LOOP INSERT INTO TESTFORIND VALUES(X,CHR(X)||'XXX'); END LOOP; END;
    2 /
   
  PL/SQL procedure successfully completed.
   
  SQL> 
  SQL> CREATE INDEX IDX_T ON TESTFORIND(ID)
    2 /
   
  Index created.
   
  SQL> 
  SQL> ANALYZE INDEX IDX_T VALIDATE STRUCTURE
    2 /
   
  Index analyzed.
   
  SQL> 
  SQL> select height,blocks,name,LF_ROWS,LF_BLKS,DEL_LF_ROWS,USED_SPACE,BLKS_GETS_PER_ACCESS from index_stats
    2 /
   
     HEIGHT   BLOCKS NAME          LF_ROWS  LF_BLKS DEL_LF_ROWS USED_SPACE BLKS_GETS_PER_ACCESS
  ---------- ---------- -------------------- ---------- ---------- ----------- ---------- --------------------
       2    292 IDX_T          100000    222      0  1591522          3
   
  1 row selected.
   
  SQL> 
  SQL> begin for x in 1..100000 loop update testforind set id=id+seq.nextval where id=x; end loop; end;
    2 /
   
  PL/SQL procedure successfully completed.
   
  SQL> 
  SQL> commit;
   
  Commit complete.
   
  SQL> 
  SQL> ANALYZE INDEX IDX_T VALIDATE STRUCTURE
    2 /
   
  Index analyzed.
   
  SQL> 
  SQL> select height,blocks,name,LF_ROWS,LF_BLKS,DEL_LF_ROWS,USED_SPACE,BLKS_GETS_PER_ACCESS from index_stats
    2 /
   
     HEIGHT   BLOCKS NAME          LF_ROWS  LF_BLKS DEL_LF_ROWS USED_SPACE BLKS_GETS_PER_ACCESS
  ---------- ---------- -------------------- ---------- ---------- ----------- ---------- --------------------
       2    957 IDX_T          261803    643   161803  4177504      3.1545075
   
  1 row selected.
   
  SQL> 
  SQL> analyze table testforind compute statistics;
  analy
  Table analyzed.
   
  SQL> ze index idx_t compute statistics;
   
  Index analyzed.
   
  SQL> col segment_name format a40
  SQL> l
    1* SELECT SEGMENT_NAME,BYTES,BLOCKS FROM USER_SEGMENTS WHERE SEGMENT_NAME IN ('TESTFORIND','IDX_T')
  SQL> /
   
  SEGMENT_NAME                 BYTES   BLOCKS
  ---------------------------------------- ---------- ----------
  TESTFORIND                 2392064    292
  IDX_T                    7839744    957
   
  2 rows selected
  
  
  SQL> conn scott/tiger
  Connected.
  SQL> @testcase1
  SQL> DROP TABLE TESTFORIND
    2 /
   
  Table dropped.
   
  SQL> 
  SQL> CREATE TABLE TESTFORIND(ID NUMBER,VALUE VARCHAR2(20));
   
  Table created.
   
  SQL> 
  SQL> BEGIN FOR X IN 1..100000 LOOP INSERT INTO TESTFORIND VALUES(X,CHR(X)||'XXX'); END LOOP; END;
    2 /
   
  PL/SQL procedure successfully completed.
   
  SQL> 
  SQL> CREATE INDEX IDX_T ON TESTFORIND(ID)
    2 /
   
  Index created.
   
  SQL> 
  SQL> ANALYZE INDEX IDX_T VALIDATE STRUCTURE
    2 /
   
  Index analyzed.
   
  SQL> 
  SQL> select height,blocks,name,LF_ROWS,LF_BLKS,DEL_LF_ROWS,USED_SPACE,BLKS_GETS_PER_ACCESS from index_stats
    2 /
   
     HEIGHT   BLOCKS NAME          LF_ROWS  LF_BLKS DEL_LF_ROWS USED_SPACE BLKS_GETS_PER_ACCESS
  ---------- ---------- -------------------- ---------- ---------- ----------- ---------- --------------------
       2    256 IDX_T          100000    222      0  1591522          3
   
  1 row selected.
   
  SQL> 
  SQL> BEGIN FOR X IN 1..100000 LOOP IF MOD(X,3)=0 THEN UPDATE TESTFORIND SET ID=ID+100000 WHERE ID=X ;END IF; END LOOP; END;
    2 /
   
  PL/SQL procedure successfully completed.
   
  SQL> 
  SQL> COMMIT;
   
  Commit complete.
   
  SQL> 
  SQL> ANALYZE INDEX IDX_T VALIDATE STRUCTURE
    2 /
   
  Index analyzed.
   
  SQL> 
  SQL> select height,blocks,name,LF_ROWS,LF_BLKS,DEL_LF_ROWS,USED_SPACE,BLKS_GETS_PER_ACCESS from index_stats
    2 /
   
     HEIGHT   BLOCKS NAME          LF_ROWS  LF_BLKS DEL_LF_ROWS USED_SPACE BLKS_GETS_PER_ACCESS
  ---------- ---------- -------------------- ---------- ---------- ----------- ---------- --------------------
       2    512 IDX_T          133333    429    33333  2126982      3.14516176
   
  1 row selected.
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有