免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 955 | 回复: 0
打印 上一主题 下一主题

oracle conecpt中的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:44 |只看该作者 |倒序浏览
疑问解决,view是会变成invalid。但是如果你执行一遍select * from view 那么view就会被重新编译。
我在第一次测试的时候就是先执行了一遍select*from view 所以没有看出来view是不是invalid。第二次测试时在删除index后直接查看view的状态发现果然是invalid。

有一点要注意的就是,这里的view必须是基于index的,否则删除index对view没有影响。
--------------------------------
在oracle concept, 第六章 schema object 间的依赖关系,6.2.1.3部分有这么一段话

Some data warehouses drop indexes on tables at night to facilitate faster loads. However, all views dependent on the table whose index is dropped get invalidated. This means that subsequently running any package that reference these dropped views will invalidate the package.

翻译过来的意思就是,在数据仓库中,有时会把表的索引删除以加快数据载入速度。然而依赖于这些表的视图会变成无效,接着就会导致依赖于这些视图的包变为无效状态。


可是经过测试。

测试过程如下

创建一个表 fbt
创建索引   ind1
创建视图   v1

通过查询执行计划发现v1是基于ind1创建的。现在我们把ind1删除,可是发现对v1没有影响,只是执行计划中的扫描方式由索引扫描变成了全表扫描。  难道说数据仓库和数据库有什么不同么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP