什么时候用索引组织表,什么时候用堆表

来源:互联网 发布:农村淘宝合伙人能做吗 编辑:程序博客网 时间:2024/04/29 04:47

 着急的事,慢慢地说;大事要事,想清楚说;小事琐事,幽默地说;做不到的事,不要随便说;伤人的事,坚决不说;没有的事,不要胡说;别人的事,谨慎地说;自己的事,坦诚直说;该做的事,做好再说;将来的事,到时再说

 

其实这也就牵扯到两种表类型的定义的问题:
heap table 就是一般的表,获取表中的数据是按命中率来得到的。没有明确的先后之分,在进行全表扫描的时候,并不是先插入的数据就先获取。数据的存放也是随机的,当然根据可用空闲的空间来决定。
而iot 就是类似一个全是索引的表,表中的所有字段都放在索引上,所以就等于是约定了数据存放的时候是按照严格规定的,在数据插入以前其实就已经确定了其位置,所以不管插入的先后顺序,它在那个物理上的那个位置与插入的先后顺序无关。这样在进行查询的时候就可以少访问很多blocks,但是插入的时候,速度就比普通的表要慢一些。
适用于信息检索、空间和OLAP程序。索引组织表的适用情况:
1、 代码查找表。
2、 经常通过主码访问的表。
3、 构建自己的索引结构。
4、 加强数据的共同定位,要数据按特定顺序物理存储。
5、 经常用between…and…对主码或唯一码进行查询。数据物理上分类查询。如一张订单表,按日期装载数据,想查单个客户不同时期的订货和统计情况。
经常更新的表当然不适合iot,因为oracle需要不断维护索引,而且由于字段多索引成本就大。