SQL 21日自学通(v1.0)笔记4(视图和索引)

来源:互联网 发布:mac adobe 破解工具 编辑:程序博客网 时间:2024/05/17 21:57

1.使用视图

create view:CREATE VIEW <view_name> [(column1, column2...)] AS SELECT <table_name column_names> FROM <table_name>

eg:CREATE VIEW ENVELOPE (COMPANY, MAILING_ADDRESS) AS SELECT NAME, ADDRESS + " " + CITY + "," + STATE FROM COMPANY;--+可以把字符连接起来

       视图其实就是一组表的映射所以想要修改下层表的数据并不会总是像上例那样直接下面给出了你在使用视图进行工作时常用会遇到的限制:
l 对于多表视图你不能使用 DELETE 语句
l 除非底层表的所有非空列都已经在视图中出现 否则你不能使用INSERT 语句有这个限制的原因是SQL 不知道应该将什么数据插入到NOT COLUMNS 限制列中没有在视图中出现的
l 如果对一个归并的表格插入或更新记录 那么所有被更新的记录必须属于同一个物理表
l 如果你在创建视图时使用了 DINTINCT 子句那么你就不能插入或更新这个视图中的记录
l 你不能更新视图中的虚拟列 它是用计算字段得到了

DROP VIEW view_name

2.使用索引

CREATE INDEX index_name ON table_name(column_name1, [column_name2], ...);

CREATE INDEX [schema.]index ON { [schema.]table (column [!!under!!ASC|DESC] [, column [!!under!!ASC|DESC]] ...) | CLUSTER [schema.]cluster } [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace] [STORAGE storage_clause] [PCTFREE integer] [NOSORT]

这里给出了几个在使用索引时需要记住的技巧
l 对于小表来说 使用索引对于性能不会有任何提高
l 当你的索引列中有极多的不同的数据和空值时索引会使性能有极大的提高
l 当查询要返回的数据很少时索引可以优化你的查询 比较好的情况是少于全部数据的25% 如果你要返回的数据很多时索引会加大系统开销
l 索引可以提高数据的返回速度 但是它使得数据的更新操作变慢在对记录和索引进行更新时请不要忘记这一点如果要进行大量的更新操作在你执行更新操作时请不要忘记先删除索引当执行完更新操作后只需要简单的恢复索引即可对于一次特定的操作系统可以保存删除的索引18 个小时在这个时间内数据更新完后你可以恢复它
l 索引会占用你的数据库的空间 如果你的数据库管理系统允许你管理数据库的磁盘空间那么在设计数据库的可用空间时要考虑索引所占用的空间
l 对字段的索引已经对两个表进行了归并操作 这一技术可以极大地提高归并的速度
l 大多数数据库系统不允许你对视图创建索引 如果你的数据库系统允许这样做那么可以使用这种方法来在SELECT 语句中对视图的数据进行排序很不巧一些数据库系统中也不允许在视图中使用ORDERY BY 子句
l 不要创建对经常需要更新或修改的字段创建索引 更新索引的开销会降低你所期望获得的性能
l 不要将索引与表存储在同一个驱动器上 分开存储会去掉访问的冲突从而使结果返回得更快

3.群集簇的使用

CREATE CLUSTER [schema.]cluster (column datatype [,column datatype] ... )
[PCTUSED integer] [PCTFREE integer] [SIZE integer [K|M] ]
[INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace]
[STORAGE storage_clause] [!!under!!INDEX | [HASH IS column] HASHKEYS integer]






0 0
原创粉丝点击