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 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)。
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 按钮。
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(见 参考资料)。