oracle索引:
问题一:1.我的期望(目的是):期望仅新创建的index_user索引生效,原索引仅作备份(还原方便),不起作用!
2.问题描述:已有索引名称为index_user,,如果我仅将该索引名称改为index_user_bak,(索引内容本身不变),再新建索引index_user(和原index_user创建语句完全一样),请问:1.对于对应的表,实际生效的是哪个索引:index_user_bak和index_user?还是仅index_user?还是其它(如:报错)?问题二:如果重建索引(因为有大批量的数据删除操作),执行完下面的命令:
ALTER INDEX index_user REBUILD;(ALTER INDEX index_user REBUILD COMPUTE STATISTICS; )
如果要索引马上生效,还需要做其它操作吗?(如: 更新统计信息: execute dbms_stats.gather_table_stats) 分虽然不多,但诚意满满的,谢谢亲了!
问题一:1.我的期望(目的是):期望仅新创建的index_user索引生效,原索引仅作备份(还原方便),不起作用!
2.问题描述:已有索引名称为index_user,,如果我仅将该索引名称改为index_user_bak,(索引内容本身不变),再新建索引index_user(和原index_user创建语句完全一样),请问:1.对于对应的表,实际生效的是哪个索引:index_user_bak和index_user?还是仅index_user?还是其它(如:报错)?问题二:如果重建索引(因为有大批量的数据删除操作),执行完下面的命令:
ALTER INDEX index_user REBUILD;(ALTER INDEX index_user REBUILD COMPUTE STATISTICS; )
如果要索引马上生效,还需要做其它操作吗?(如: 更新统计信息: execute dbms_stats.gather_table_stats) 分虽然不多,但诚意满满的,谢谢亲了!
问题1:是具体何种情况啊? (我需要的是仅新创建的index_user索引生效哦,这么可以么?还是必须先将原索引文件删除,再创建相同的索引文件呢?)
问题2:只通过上面命名重建索引不会立刻生效么?(如果不手动更新统计信息,是否oracle有自己的job在某个时间段执行后,也会生效呢?)
SQL> create table test(id int, name varchar2(10)) ;
Table created
SQL> create index ix_test on test(id) ;
Index created
SQL> alter index ix_test rename to ix_text_1 ;
Index altered
SQL> create index ix_test on test(id) ;
create index ix_test on test(id)
ORA-01408: 此列列表已索引
SQL> drop table test purge ;
Table droppedSQL>