查询重写(enable query rewrite):指当对物化视图的基表进行查询时,oracle 会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据
不查询重写(disable query rewrite):指当对物化视图的基表进行查询时,oracle 会不会判断能否通过查询物化视图来得到结果,直接对基表进行查询数据而不从物化视图中读取数据。默认为disable query rewrite刷新(refresh)方式[自动 on commit,手动]
刷新的方法有四种:fast、complete、force 和 never。默认值是 force
刷新的模式有两种:on demand 和 on commit。 默认值是 on demand
7、创建视图日志文件如果设置刷新方法为 fast,必须先构建一个基于基表的视图日志,语法如下:
create materialized view log on
<table_name>
[tablespace <tablespace_name>] --视图日志保存位置
[with [primary key|rowid|sequence ];--标示基表每一行
[ including new values]
注:如果设置刷新方法为 fast,必须先构建一个基于基表的视图日志
例:
create materialized view log on emp with rowid
手动刷新
begin
dbms_mview.refresh('MY_VIEW');
end
删除物化日志文件
drop materialized view log on empd
删除物化视图
drop materialized view my_view;
物化视图总结:
物化视图提供了可伸缩的基于主键或 ROWID 的视图,指定了刷新方法和自动刷新的时间。Oracle 的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中 SQL 语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新
8、常用系统视图a) USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息。
1. select * from user_users;--查看当前用户信息
2. select * from user_tables;--查看当前用户创建表信息
3. select * from user_views;--查看当前用户创建视图信息
4. select * from user_tab_privs—查看当前用户表权限
5. select * from user_sys_privs;--查看当前用户系统
6. select * from user_role_privs;--查看当前用户角色
b) ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息。
c) DBA_*:有关整个数据库中对象的信息。这里的*可以为 TABLES,INDEXES, OBJECTS, USERS 等。
d) V$*:一般是动态视图,随着客户端或参数值设定的不同而不同
索引 1、概述索引是一个单独的、物理的数据结构,在这个数据结构中包括表中一列或若干列的值以及相应的指向表中物理标识这些值的数据页的逻辑指针的集合。
索引是建立在表上的可选对象,设计索引的目的是为了提高查询的速度。但同时索引也会增加系统的负担,进行影响系统的性能。
索引一旦建立后,当在表上进行 DML 操作时,Oracle 会自动维护索引,并决定何时使用索引。
索引的使用对用户是透明的,用户不需要在执行 SQL 语句时指定使用哪个索引及如何使用索引,也就是说,无论表上是否创建有索引,SQL 语句的用法不变。用户在进行操作时,不需要考虑索引的存在,索引只与系统性能相关。
2、索引的原理当在一个没有创建索引的表中查询符合某个条件的记录时,DBMS 会顺序地逐条读取每个记录与查询条件进行匹配,这种方式称为全表扫描。全表扫描方式需要遍历整个表,效率很低。
3、索引的类型Oracle 支持多种类型的索引,可以按列的多少、索引值是否唯一和索引数据的组织形式对索引进行分类,以满足各种表和查询条件的要求。
1)单列索引和复合索引[索引列多少]
2) B 树索引[结构]
3) 位图索引[结构]
4)函数索引[语法]
4、创建索引语法:
create [unique] | [bitmap] index index_name
on table_name([column1 [asc|desc],column2
[asc|desc],…] | [express])
[tablespace tablespace_name]
[pctfree n1]
[storage (initial n2)]
[nologging]
[noline]
[nosort]
解析:
unique:表示唯一索引,默认情况下,不使用该选项。
bitmap:表示创建位图索引,默认情况下,不使用该选项
pctfree:指定索引在数据块中的空闲空间。对于经常插入数据的表,应该为表中索引指定一个较大的空闲空间
nologging:表示在创建索引的过程中不产生任何重做日志信息。默认情况下,不使用该选项
online:表示在创建或重建索引时,允许对表进行 dml 操作。默认情况下,不使用该选项