深入理解Oracle表(7):10种表类型的数据存储和适用场景浅析(二)
个行集
⑵ 适用场景
2个用途:
① 用于扩展PL/SQL 语言,这是常见的用法
② 作为一种物理存储机制(几乎没用!)
如果把嵌套表用作一个存储机制,一定要保证将嵌套表建立为一个IOT
以避免nested_table_id上索引的开销以及嵌套表本身的开销
倘若没用IOT,则要确保nested_table_id列上创建一个索引,来避免为查找子行而全表扫
在工业环境,完全可以用父子表+视图的方案来替代
㈦ 临时表
⑴ 数据存储
临时表的数据是放在PGA中的,如果往临时表中插入的数据量很大,超过PGA的大小,则数据将放于临时表空间
⑵ 适用场景
参看Think之前写的一篇文章:
Oracle 临时表之临时表的应用问题
㈧ 外部表
⑴ 数据存储
数据在OS层,元数据在数据字典里定义
⑵ 适用场景
大量数据 平面文件 只查询 不更新
还有就是对文本.日志.进行查询.统计.分析
㈨ 对象表
⑴ 数据存储
对象表实际上是伪装的关系表,总会转换为原来的关系行和列
伪主键增加raw(16)存储开销
创建了一个额外的索引
⑵ 适用场景
① 存储上:工业环境,我们一般使用关系表上的视图来取代对象表作为一种存储机制
② 封装性:对象表的引用是为了使数据更有封装的特点
③ 开发上:扩展了PL/SQL,方便开发
㈩ 分区表
⑴ 数据存储
一张分区表对应多个分区,每个分区是一个Segment,这些分区Segment可建在相同的Tablespace上,也可一个分区对应一个Tablespace
⑵ 适用场景
① 管理上:分区,分而治之,其重点在于高可用(管理),而附属价值才是性能的提高
② 查询时:在查询时指定访问某个Segment,这样从物理文件上减少I/O访问,从而可以优化查询
③ 理数据:我认为最能体现分区表好处的地方就是处理历史数据的时候