视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
说说IOT和mappingtable的那些事---几句话道出
2020-11-09 10:22:15 责编:小采
文档


作为培训师多年,当学员学完1Z0-043的第10章或11g相关章节时,经常搞不清IOT和mappingtable的那些事,就请让我几句话道出这俩位的:1)当你创建了一个IOT表

作为培训师多年,当学员学完1Z0-043的第10章或11g相关章节时,经常搞不清IOT和mappingtable的那些事,就请让我几句话道出这俩位的:

1)当你创建了一个IOT表,想在上面的其中一列(当然是非主键的其他列)建立位图索引(注意不是普通的b树),,你必须建立一个mappingtable。----必需的,注意到没有mappingtable时的报错信息了吗?
2)查user_objects,查出IOT的object_id。用这个object_id:

select * from dba_tables where table_name like '%刚才查到的object_id%';

找到带mapping字眼的那个表,它就是mappingtable。

3)注意到Mappingtable是个heaptable,用来存储IOT的逻辑rowid。Mappingtable的每一行存储了对应的IOT表中记录的logicalrowid。因此这个mappingtable就维护了IOT表的行位置关系。

4)为什么要这样做呢?
因为bitmap索引条目中保存的rowid要用physicalrowid,而IOT是无法提供稳定的physicalrowid的,因此bitmapindex就只能记录mappingtable的physicalrowid。通过bitmap索引来访问的执行计划大概就是首先根据bitmapindex中记录的mappingtablephysicalrowid访问mappingtable,然后通过mappingtable中的logicalrowid再来访问IOT表。


打个比喻:曲线救国。

本文出自 “botang唐波O记门店” 博客,请务必保留此出处

下载本文
显示全文
专题