以前在接触索引的时候,就想过要是表字段太少,索引效果不是很不好吗,直接用索引不是更直接吗?后来因为懒惰也没有去查找相关资料。正好今天看到了table organization index,看了一下,实现的功能就是这个意思,这里分享给大家。

其实正常项目中,90%以上都是正常的heap表。但我们也不能忽略那些用的少,但给我们性能带来巨大优化的其他表类型。

首先,创建两张表:

create table tindex
(myid number primary key,
myname varchar2(20))
organization index;

create table tindex1
(myid number primary key,
myname varchar2(20)) ;

分别插入数据

insert into tindex values(111,'abcd');
insert into tindex1 values(111,'abcd');

1、我们来看没有where解释计划:

select * from tindex;

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|Time |

------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 1 | 25 | 2 (0)|00:00:01 |

| 1 | INDEX FAST FULL SCAN| SYS_IOT_TOP_92809 | 1 | 25 | 2 (0)|00:00:01 |

------------------------------------------------------------------------------------------

Note
------ dynamic sampling used for this statement (level=2)

统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
4 consistent gets
0 physical reads
0 redo size
491 bytes sent via SQL*Net to client
420 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed

select * from tindex1;

-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 25 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| TINDEX1 | 1 | 25 | 3 (0)| 00:00:01 |
-----------------------------------------------------------------------------

Note
------ dynamic sampling used for this statement (level=2)

统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
7 consistent gets
0 physical reads
0 redo size
495 bytes sent via SQL*Net to client
419 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed

可以看到consistent gets相差2,通过解释计划,一个为INDEX FAST FULL SCAN,另一个是INDEX FAST FULL SCAN,相信我们也可以看出其中的原因。因为一个是按照物理顺序来读取。

2、在我们加上条件where后,效果更加明显:

select * from tindex where myid=111;

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Tim

e |

---------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 1 | 25 | 1 (0)| 00:

00:01 |

|* 1 | INDEX UNIQUE SCAN| SYS_IOT_TOP_92809 | 1 | 25 | 1 (0)| 00:

00:01 |

select * from tindex1 where myid=111;

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)

| Time |

--------------------------------------------------------------------------------

------------

| 0 | SELECT STATEMENT | | 1 | 25 | 1 (0)

| 00:00:01 |

| 1 | TABLE ACCESS BY INDEX ROWID| TINDEX1 | 1 | 25 | 1 (0)

| 00:00:01 |

|* 2 | INDEX UNIQUE SCAN | SYS_C0015919 | 1 | | 1 (0)

| 00:00:01 |

其中一个consistent gets为1,另一个为2,原因从解释计划的执行方式可以看出,一个需要返回给heap表,另一个则不需要。

IOT表的更多相关文章

  1. dump iot表

    SQL> create user scan identified by scan default tablespace users; User created. SQL> grant db ...

  2. iot 表 主键索引叶子块包含了表所有数据

    <pre name="code" class="html">iot表测试: 在create table语句后面使用organization inde ...

  3. iot 表索引dump《2》

    iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT.但是在不指定主键Primary Key的情况下,是不允许建表的. create ...

  4. heap表和iot表排序规则不同

    heap 和iot 对比 OBJECT_NAME OBJECT_TYPE --------------------------------------------------------------- ...

  5. iot表输出按主键列排序,heap表不是

    <pre name="code" class="html"> create table t1 (id char(10) primary key,a1 ...

  6. iot 表主键存放所有数据,且按数据插入顺序排序

    iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT.但是在不指定主键Primary Key的情况下,是不允许建表的. create ...

  7. Mysql InnoDB 是IOT表 锁基于索引

    </pre>Mysql InnoDB 是IOT表 锁基于索引<pre>

  8. Oracle 验证IOT表数据存储在主键里

    iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT.但是在不指定主键Primary Key的情况下,是不允许建表的. create ...

  9. IOT表优缺点

    <pre name="code" class="html">IOT表是将所有东西都塞到叶块中,表就是索引,可以避免回表 首先,对于IOT而言,只有索 ...

  10. Mysql iot表

    我们知道一般的表都以堆(heap)的形式来组织的,这是无序的组织方式. Oracle还提供了一种有序的表,它就是索引组织表,简称IOT表.IOT表上必须要有主键,而IOT表本身不对应segment,表 ...

随机推荐

  1. 协程和IO模型

    协程 1.什么是协程 单线程实现并发 在应用程序里控制多个任务的切换+保存状态 优点: 应用程序级别速度要远远高于操作系统的切换 缺点: 多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地 该线程内的 ...

  2. Linux文件查找命令find和xargs详解

    PS:find是个很强大的命令,能够匹配正则,查找对应权限,能够帮你精确的定位你的系统中的任何地方任何目录下的文件.下面这篇是关于find命令用法最详细的一篇了,记录下.还有要注意的:本文的分号:其实 ...

  3. [网络安全]NTP反射型DDOS攻击PPT

    给运维小组培训的NTP反射型DDOS攻击的PPT

  4. element-ui中select下拉框,选择后赋值成功,但是框上不显示的坑

    这个是今天遇到一个坑,因为也是第一次使用vue+element-ui开发,所以记录一下自己遇到的一些问题. 这个问题是在开发省市区三级联动组件的时候遇到的,具体的情况如下发的gif图,虽然解决了问题, ...

  5. TDocVariantData解析JSON

    TDocVariantData解析JSON var json: RawUTF8; doc: TDocVariantData; i: integer;begin DataBase := TOleDBMS ...

  6. PTC介绍

    付费点击或按就付(英文:Paid-To-Click,缩写作PTC或pay_per-click)是一种点击付费的线上商业模式.PTC的经营模式是以PTC网站作为广告客户和消费者的仲介,广告客户付钱给经营 ...

  7. Java9 modules (Jigsaw)模块化迁移

    要点 通过模块化的方式开发应用程序,实现更好的设计,如关注点分离和封装性. 通过Java平台模块化系统(JPMS),开发者可以定义他们的应用程序模块,决定其他模块如何调用他们的模块,以及他们的模块如何 ...

  8. css实现半颗星评分效果

    效果如下: html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  9. Xilinx Spartan6常用资源Verilog例化

    // DSP48A1 : In order to incorporate this function into the design, // Verilog : the following insta ...

  10. linux xfs文件系统无法用readdir获取dirent文件类型d_type则用stat获取暨stat函数讲解

    stat函数讲解 表头文件:    #include <sys/stat.h>             #include <unistd.h>定义函数:    int stat ...