[高分求解]Oracle 8i 的视图能建索引吗~~?

clerkie 2005-08-15 05:38:30
如题,听说8i只有物化视图才能建索引,不知道是真是假,如果是真的,那怎么建物化视图?
如果普通的视图也能建索引,那应该怎么操作……?
我现在有3个表,数据在几百万行,查询一次视图要6分钟左右,痛苦啊,要是能为视图建索引就快多了……

郁闷的Oracle~~
...全文
432 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcjp 2005-08-19
  • 打赏
  • 举报
回复
其实主要是 在where 条件中的 列要加索引 ,
加索引后 最好看一下其执行计划
通过计划 你可以看到 哪个索引起了作用 再做适当修改 要注意的就是 在给表的相关里加索引的时候必须是where条件中的列 如果你有联合索引 但在where条件中 又不包含其中的字段的时候 你在执行计划中就会发现其索引根本上没有起到作用!
zflying2000 2005-08-18
  • 打赏
  • 举报
回复
如果明白普通视图就是把先好的语句重新叫了一个名字的话你就不会提这种问题了。
最终执行视图查询时候实质还是执行你写的视图的哪个语句在加上你的查询视图的条件综合的语句。oracle依据该整个语句进行分析优化的!
物化视图实质类似与存储过程+JOB把数据定期刷新到你的物化视图中。物化视图是物理真正存储的数据,故物化视图是可以建立索引的。
要优化视图的执行速度,实质还是优化你视图中查询语句相关的表的索引或者其他关联看哪个效率最高而做优化!
heyixiang 2005-08-17
  • 打赏
  • 举报
回复
starbzj(bbb)

我的视图都是200个表合起来的,没索引,那……
clerkie 2005-08-17
  • 打赏
  • 举报
回复
楼上的兄弟的说法有问题~~

我的视图分别由三个表用union来合成的,如果分开来查找三个表,每个表的时候差不多在10秒左右,但是直接找视图的话,要140多秒,害得我极度郁闷啊~~
starbzj 2005-08-16
  • 打赏
  • 举报
回复
呵呵,视图上加索引?
这个想法很好玩。
你只用在表的对应字段上加上索引,视图上的效率自己就提高了,不用给视图再加什么索引的。
bzszp 2005-08-16
  • 打赏
  • 举报
回复
普通的视图不行
oracle817

SQL> create view vdemo as select * from t;

视图已建立。

已用时间: 00: 00: 00.60
SQL> desc vdemo;
名称 空? 类型
----------------------------------------- -------- ------
AAA NUMBER
BBB NUMBER

SQL> create index idx_taaa on vdemo(aaa);
create index idx_taaa on vdemo(aaa)
*
ERROR 位于第 1 行:
ORA-01702: 此处不允许有视图


已用时间: 00: 00: 00.60
SQL>
njhart2003 2005-08-15
  • 打赏
  • 举报
回复
物化视图实际是个不断刷新的表
举例如下:
create materialized view mv1
build immediate
refresh on commit -- 提交时立即刷新
enable query rewrite
as
select owner,count(*)
from all_objects
group by owner;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧