知识点内容:
视图
索引
视图:
概念:
View其实是执行查询语句后得到的结果,可以仿真成数据表来使用,也成为“虚拟数据表”
视图与数据表的区别:
数据表实际存储记录的地方
视图不保存任何记录,存储的是查询语句
视图的优点:
增强可读性
数据安全及保密:针对不同用户,可以创建不同视图,限制其所能浏览和编辑的数据内容。
降低查询复杂度
方便维护
创建视图的语法:
IF(EXISTS(SELECT * FROM SYS.OBJECTS WHERE NAME =’V_STU’))
DROP VIEW V_STU
CREATE VIEW V_STU AS SLECT ID,NAME,AGE,SEX FROM STUDENT
修改视图的语法
ALTER VIEW V_STU AS SELECT ID,NAME,SEX FROM STUDENT;
ALTER VIEW V_STU(编号,名称,性别) AS SELECT ID,NAME,SEX FROM STUDENT
索引:
概念:
就是数据表中数据和相应的存储位置的列表,
作用:
可以提高在表或视图中的查找数据的速度
分类:
聚集索引
非聚集索引
聚集索引与非聚集索引区别:
聚集索引:
每个表只允许创建一个聚集索引
物理的重排表的数据以符合索引约束
用于经常查找数据列
非聚集索引
做多可以由249个非聚集索引
创建一个键值指向数据在数据页中的位置
用于从表中查找大哥值的列
创建索引的语法:
CREATE [UNIPUE][CLUSTERED|NOCLUSTERED]
INDEX INDEX_NAME
ON TABLE_NAME(COLUMN_NAME…)
[WITH FILLFACTOR=X]
UNIQUE唯一索引
CLUSTERED聚集索引
NOCLUSTERED非聚集索引
FILLFACTOR填充因子大小,范围在0-100之间,表示索引页填满在空间所占的百分比
实列:
IF(EXISTS(SELECT * FROM SYS.INDEXES WHERE NAME=’IDX_STU_NAME’))
DROP INDEX STUDENT.IDX_STU_NAME
GO
CREATE INDEX IDX_STU_NAME ON STUDENT(NAME)
适合创建索引的列:
当数据库的某一列被频繁的用于数据库查询时,或者该列用于数据库进行排序时可以创建成索引。
不适合创建索引的列:
如果列中有几个不同的值,或者表中仅包含几行值
因为索引在搜索数据所花的时间比在表中逐行搜索花的时间更长
索引的优点:
通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
可以大大加快数据的检索速度,是创建索引的最主要的原因。
加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
索引缺点:
耗费时间长,
创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
空间就会更大。
索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
降低了数据的维护速度
当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度