ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle concepts 4 - View, etc

oracle concepts 4 - View, etc

原创 Linux操作系统 作者:zhaojienju 时间:2010-10-18 15:35:38 0 删除 编辑

View不占存储空间,只在数据字典中存了定义它的sql.

 

CREATE VIEW a AS

SELECT XXXX

FROM XXX

WHERE XXX

WITH CHECK OPTION CONSTRAINT XXX;

Check option:对这个视图的insert/update不能产生该视图查询不出的纪录,比如一个department_id = 10的视图,只能对该视图插入department_id = 10的纪录,不能插入department_id =30.

 

当你在查询中引用到视图时,oracle会:

1。将查询和视图定义的查询语句进行合并和优化。

2.将语句放进共享sql区。当没有共享sql区有类似的语句时,oracle才会解析该语句。

3.执行语句。

 

Join view:视图基于多个表或视图。

 

一个可更新的join view,就是没有WITH READ ONLY限制的join view,此外,还有一些限制,比如对join view的insert/update/delete一次只能更改一个基表的数据。

一个join view中的所有可更新的列必须对应一个key-preserved table中的列。

连接查询中的key-preserved表,是指该表中的数据在该连接查询的结果中,最多只出现一次。比如,

Create view staff_dept_10_30 as

Select employee_id, last_name, job_id, e.department_id

From employees e, departments d

Where e.department_id = d.department_id

And e.department_id in (10, 30);

 

其中employees表就是key preserved table, 但departments就不是。

 

 

物化视图:

1.包含真正的数据,占用存储空间。

2.主表发生change的时候,他们也会更新。

3.提高性能。

4.对sql 应用和用户来说是透明的。

 

物化试图的刷新方法:fast refresh, complete refresh

Complete refresh是在物化试图最开始定义as BUILD IMMEDIATE的时候发生的。

Fast refresh只刷新刚发生的数据变化。

 

 

Query rewrite:

对主表数据量过大,且有aggregate或join时,数据库会将查询优化,把对主表的访问写成对物化视图的访问,以提高性能。

 

Dimension 维

一个维表定义了列和列之间的逻辑上的层次关系,例如

CREATE DIMENSION customers_dim

LEVEL customer          IS (customers.cust_id)

LEVEL city                  IS (customers.cust_city)

LEVEL state                IS (customers.cust_state_province)

LEVEL country            IS (countries.country_id)

LEVEL subregion         IS (countries.country_subregion)

LEVEL region              IS (countries.country_region)

HIERARCHY geog_rollup (

            Customer         CHILD OF

            City                  CHILD OF

            State                CHILD OF

            Country            CHILD OF

            Subregion         CHILD OF

            Region

JOIN KEY (customers.country_id) REFERENCES country )

ATTRIBUTE customer DETERMINES

(cust_first_name, ….)

ATTRIBUTE country DETERMINES (countries.country_name);

更多的可以参考数据仓库。

 

 

同义词:其实就是一个别名。对同义词的授权就是对其对象的授权。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11903161/viewspace-676187/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle 优化 - 待看
请登录后发表评论 登录
全部评论

注册时间:2010-10-05

  • 博文量
    80
  • 访问量
    205930