现在位置:首页->学习专题->DB2专题
第 6 部分: 数据定义语言和数据控制语言(4)
作者: 日期: 2007-8-25 10:55:26 访问次数:出处:
 显示选项:自动滚屏[左键停止]

CREATE VIEW 语句


练习

为了保护客户的隐私,对于数据库用户,fname、lname 和 email 列必须不可见。创建 Gold 表的一个视图,其中只包含 card_id、storekey 和 status 列。


例子查询

CREATE VIEW aroma.gold_public(card_id, storekey, status) AS
SELECT card_id, storekey, status
FROM aroma.gold;


结果

SELECT * FROM aroma.gold_public;



Card_id Storekey Status
1 1 Active
2 1 Active
3 1 Active
4 1 Active
5 1 Active


CREATE VIEW 语句的语法

CREATE VIEW view_name(view_column_list) AS
SELECT table_column_list
FROM table_name;


view_column_list 视图中各列名称的列表。这里的列名与 SELECT 语句中的 table_column_list 是一对一的关系。如果没有指定列名,那么视图就使用与 SELECT 语句的结果表中的列相同的名称
table_column_list 要从 table_name 表中选择的列的列表


关于该查询

创建 Gold 表的一个公共视图,只显示客户的 card_id、storekey 和 status 信息。

查询的第一行为视图命名(gold_public),并定义它的列(card_id、storekey 和 status)。名称 gold_public 在它的模式内必须是惟一的。虽然视图不包含数据,但是视图名称和表名的用法是类似的。这个视图将有三个列,card_id、storekey 和 status,分别对应于 Gold 表的 card_id、storekey 和 status 列。

第二行是一个 SELECT 语句,描述要从 Gold 表中选择哪些值。它可以包括子句 ALL、DISTINCT、FROM、WHERE、GROUP BY 和 HAVING。

要了解关于 CREATE VIEW 语句的更多信息,请查看 DB2 Information Center (见 参考资料)。

CREATE INDEX 语句


 

练习

SELECT 语句直接从 Gold 表中查找 storekey 要花太多的时间。因此可以创建 storekey 上的一个索引来解决这个问题。


 

访问计划 —— 之前

使用索引可以提高数据表上的查询性能。您可以看看访问计划,比较一下没有查询和有查询这两种情况下查询的性能。

在 Command Editor 中输入以下查询,然后单击 Execute and Access plan 按钮。这将执行该查询,并提供查询的执行计划的图形化表示。

SELECT * from aroma.gold;

在 Command Editor 中单击 Access Plan 标签,查看 DB2 访问计划。注意,aroma.gold 表上执行了一个表扫描(TBSCAN)。


图 1. 建索引之前的访问计划
建索引之前的访问计划


例子查询

CREATE INDEX aroma.gold_index ON aroma.gold (storekey);
RUNSTATS ON TABLE aroma.gold ON ALL COLUMNS;
COMMIT WORK;


结果

为了查看查询的性能是否有提高,在 Command Editor 中输入相同的 SELECT 语句,然后单击 Execute and Access plan 按钮。


图 2. 建索引之后的访问计划
建索引之后的访问计划


CREATE INDEX 语句的语法

CREATE INDEX index_name ON table (column_list);
RUNSTATS ON TABLE table ON ALL COLUMNS;
COMMIT WORK;


column_list 要在其上创建索引的列的列表

最后两行确保索引的结果会在随后的查询中反映出来。


 

关于该查询

该查询首先在 aroma.gold 表的 storekey 节点上创建一个索引,以提高查询性能,然后在 aroma.gold 表上执行 RUNSTATS 操作,以确保 DB2 会考虑新索引。

由于目前表还比较小,因此在这次练习中观察不到查询性能有何变化。不过,这么做的目的只是演示如何创建索引,对于具有相当大的数据量的数据而言,这样做可以大大提高查询性能。

要了解关于 CREATE INDEX 语句的更多信息,请查看 DB2 Information Center(见 参考资料)。

⊕相关文章
  • ·第 6 部分: 数据定义语言和数据控制语言(3)
  • ·第 6 部分: 数据定义语言和数据控制语言(2)
  • ·第 6 部分: 数据定义语言和数据控制语言(1)
  • ·DB2 SQL 与 XQuery 教程,第 5 部分: 数据比较(5)
  • ·DB2 SQL 与 XQuery 教程,第 5 部分: 数据比较(4)
  • ·DB2 SQL 与 XQuery 教程,第 5 部分: 数据比较(3)