oracle中视图可以创建索引吗?

视图是虚表,它的数据都是来自其它实表。如果不对视图进行处理能自动创建索引吗?

oracle中视图可以创建索引,创建索引方法为:

1、打开Navicat。

2、右击oracle数据库,然后点击【打开连接】。

3、点击【其它】,然后点击【索引】,此时显示oracle数据库中所有的索引。

4、点击【新建索引】,进入索引设计界面。

5、在【常规】标签页,设置类型、表格式、表名、列名等。

6、在【高级】标签页,设置表空间、记录等选项。

7、点击【保存】,输入索引名称,然后点击【确定】。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
当然不可以啦,建索引就只能在某个表的列上,你只要记住,普通的视图就只是一条sql语句,你怎么对一条sql语句建立索引?如果数据大的话需要建立索引,那就在你的关联的字段创建索引啊,你怎么会想到要在视图上建啊,你视图和索引的概念不清楚啊。追问

sqlserver上是可以在视图上创建索引的,但是有部分条件限制。

追答

那个是物化视图吧。。。。物化视图就是一个物理上存储在数据库上的一种结构,视图只不过是一条select语句,只有通过解释执行才有实质上的意义,如果把视图运行之后得到的结果集在物理上存储在数据库中,就叫做物化视图,这种视图的结果是存储在数据库中的,当然可以建立索引啦。

追问

那我能不能把物化视图理解成中间表啊?

追答

如果你想要这样理解的话也可以,但是把物化视图当做是目标表的一个子集更好理解一点,而在实际中物化视图还要根据目标表的更新情况进行合适的刷新以保证物化视图和目标表中数据的一致性。

本回答被提问者采纳
第2个回答  2011-10-05
明确答案:
索引是针对实际数据的,不能再虚拟对象上创建。
视图上不能创建索引。追问

sqlserver上可以在视图上创建索引。如果视图不能创建索引如果数据量特别大的时候要如何处理呢?没有索引查询起来可是会很难受的!

追答

增加索引是可以的,需要在表上增加。
如果是生产在线的数据库,而且数据量很大,建议修改硬顶要做好备份工作。
以确保意外情况下的恢复。

第3个回答  2011-10-05
看了看文档:

CREATE INDEX
Purpose
Use the CREATE INDEX statement to create an index on:
One or more columns of a table, a partitioned table, an index-organized table, or a cluster
One or more scalar typed object attributes of a table or a cluster
A nested table storage table for indexing a nested table column

里面好像没有说可以在 view 上面, 创建索引的。

再测试测试

SQL> CREATE TABLE emp1 (
2 EMPLOYEE_ID int,
3 JOB_ID int,
4 HIRE_DATE DATE
5 );

表已创建。

SQL> CREATE VIEW v_emp1 AS
2 SELECT
3 EMPLOYEE_ID, JOB_ID
4 FROM
5 emp1;

视图已创建。

SQL> CREATE INDEX idx_v_emp1 ON v_emp1(JOB_ID);
CREATE INDEX idx_v_emp1 ON v_emp1(JOB_ID)
*
第 1 行出现错误:
ORA-01702: 视图不适用于此处追问

好像在物化视图上可以创建索引,不过没有用过物化视图也不清楚是个什么概念!

第4个回答  2011-10-05
不行,物化视图可以。
相似回答