SQL 第四章 索引和视图
第四章 索引和视图
索引
索引是数据表中数据和相应存储未知的列表,利用索引可以提高在表或视图中查找数据的速度。
两大类索引:聚合索引、非聚合索引
其他类索引:唯一索引(unique)、索引视图、包含型索引、全文索引、XML索引
聚合索引:根节点、中间节点、叶节点 (指表中数据航的物理存储顺序和索引顺序完全相同)
使用非聚合索引的情况:
某个字段的数据唯一性较高
查询所得到的数据量较少
已经包含聚集索引
最多有249个非聚集索引
判断索引是否存在并删除索引:
例: IF exists(SELECT * FROM sys.indexes WHERE name = 'IX_score')
DROP INDEX stuMarks.IX_score
创建索引:
例:
CREATE NONCLUSTERED
INDEX IX_score ON stuMarks(score)
WITH FILLFACTOR= 30 --填充因子0-100 可不写
GO
使用索引:
例:
SELECT * FROM stuMarks WITH(INDEX = IX_score)
SELECT * FROM stuMarks WITH(INDEX = IX_score)
WHERE score between 60 and 90
视图
视图是一张虚拟表,他表示一张表的部分数据或多张表的综合数据,其结构和数据时间里在对表的查询基础上。
创建视图语句
要注意使用视图语句的前后需要加批处理(go)
例:
--如果存在该视图,先将其删除掉
IF EXISTS ( SELECT * FROM sys.views WHERE NAME = 'view_stuInfo_stuMarks')
DROP VIEW view_stuInfo_stuMarks
GO
--创建名为view_stuInfo_stuMarks的视图
CREATE VIEW view_stuInfo_stuMarks(学号,姓名,成绩)
WITH encryption --加密视图语句 可不写
AS
SELECT stuName,stuInfo.StuID,score FROM stuInfo LEFT JOIN stuMarks
ON stuInfo.StuID = stuMarks.StuID
GO
对视图进行引用
例:
select * from view_stuInfo_stuMarks
查看视图模式
例:
select * from information_schema.views
视图加密