本帖最后由 WYhack 于 2012-08-28 14:31:33 编辑

解决方案 »

  1.   

    1:oracle查看执行计划
    你可以在session中set autotrace on,你可以看到统计信息和执行计划
    也可以使用dbms_xplan包去查看执行计划
    比如
    alter session set statistics_level='ALL';
    set autotrace off
    select * from nls_test;--你的查询语句
     select * from table(dbms_xplan.display_cursor(null,null,'runstats_last'));具体百度2:oracle的B树中是在leaf node中存储索引键以及一个指向行的rowid,通过这个rowid找到真正的行数据
      

  2.   

    1、explain plan for sql语句
       select * from table(dbms_xplan.display);2、sqlplus中 set autotrace trace explain
      然后执行你的sql3、打开sql追踪
      

  3.   

    如果用sqlplus,执行set autotrace on,之后执行的查询,都会把执行计划打出来。
    set autotrace off可以关闭此功能。如果用sqldeveloper, 选中需要执行的查询语句,F6, 右下的explain窗口会显示查询计划。通用的方法,把select * from dual换成你的查询语句就行:
    explain plan for select * from dual;
    select * from table(dbms_xplan.display);
      

  4.   

    B树索引的叶子节点包含各个索引键以及一个rowid(指向所索引的行)。
    在传统B*树索引中,键都指向一行。
    B*树聚簇索引不同,一个聚簇键会指向一个块,其中包含与这个聚簇键相关的多行,但是聚簇并不是有序地存储数据。
    而SQL Server中的聚簇索引则要求行按索引键有序的方式存储.
      

  5.   

    聚簇并不是有序地存储数据
    那也就是说oracle没有聚集索引了?
      

  6.   

    ORACLE中如果要有序存储数据,要用索引组织表-IOT.
    IOT中,数据根据主键有序地存储。
      

  7.   


    oracle的B树中是在leaf node中存储索引键以及一个指向行的rowid,通过这个rowid找到真正的行数据那在leaf node中存储的索引键值是不是以索引键的顺寻存放的呢?