
oracle中视图可以创建索引吗?
展开全部
当然不可以啦,建索引就只能在某个表的列上,你只要记住,普通的视图就只是一条sql语句,你怎么对一条sql语句建立索引?如果数据大的话需要建立索引,那就在你的关联的字段创建索引啊,你怎么会想到要在视图上建啊,你视图和索引的概念不清楚啊。
更多追问追答
追问
sqlserver上是可以在视图上创建索引的,但是有部分条件限制。
追答
那个是物化视图吧。。。。物化视图就是一个物理上存储在数据库上的一种结构,视图只不过是一条select语句,只有通过解释执行才有实质上的意义,如果把视图运行之后得到的结果集在物理上存储在数据库中,就叫做物化视图,这种视图的结果是存储在数据库中的,当然可以建立索引啦。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
明确答案:
索引是针对实际数据的,不能再虚拟对象上创建。
视图上不能创建索引。
索引是针对实际数据的,不能再虚拟对象上创建。
视图上不能创建索引。
追问
sqlserver上可以在视图上创建索引。如果视图不能创建索引如果数据量特别大的时候要如何处理呢?没有索引查询起来可是会很难受的!
追答
增加索引是可以的,需要在表上增加。
如果是生产在线的数据库,而且数据量很大,建议修改硬顶要做好备份工作。
以确保意外情况下的恢复。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看了看文档:
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: 视图不适用于此处
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: 视图不适用于此处
追问
好像在物化视图上可以创建索引,不过没有用过物化视图也不清楚是个什么概念!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不行,物化视图可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询