SQL 21日自学通(v1.0)笔记4(视图和索引)
2014-09-03 15:25
190 查看
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]
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]
相关文章推荐
- SQL 21日自学通(v1.0)笔记2(多表联合)
- SQL 21日自学通(v1.0)笔记3(DML语句)
- SQL 21日自学通(v1.0)笔记1(select语句)
- SQL 21日自学通(v1.0)笔记5(数据库安全)
- Oracle学习笔记之六(DDL:表、索引、视图、同义词、序列操作相关SQL)
- sql笔记整理之索引和视图
- SQL笔记 --- 基本表,表完整性,索引,视图
- 经典SQL学习笔记 (六)-用户管理、视图、序列、索引、权限
- 【总结】Asp.net MVC1.0 学习笔记索引
- PL/SQL学习笔记-视图
- mssql:t-sql;创建表;给表添加约束;使用变量;事务,索引,视图;存储过程
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- 创建数据库、表、主外键、各种约束、存储过程、视图、索引、事务使用、触发器、创建登录账号、数据库用户 Sql语句示例
- sql建立索引学习笔记[转]
- SQL视图创建索引
- SQL 索引视图
- SQL学习笔记八 索引,表连接,子查询,ROW_NUMBER
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- 面试准备之SQL 5 —— 事务、索引和视图