相关文章链接:
一周速学SQL Server(第六天)
一、索引介绍
1.1、索引的作用
优化数据的查询及应用系统的处理速度。
1.2、索引的定义
索引类似于书的目录,可以快速定位要查找的数据,而不必扫描整张表。从而加快查询数据,提高系统性能。(索引是看不见的,但创建索引后查询大数据时,优势显而易见)
1.3、索引的缺陷
占用存储空间。
1.4、创建索引的目的
可以快速高效地查询数据,减少系统的响应时间。
1.5、索引分为聚集索引和非聚集索引
1)聚集索引:Clustered
逻辑顺序与物理顺序一致。聚集索引最多只能有一个,可以没有。
2)非聚集索引:NonClustered
逻辑顺序与物理顺序相对对立。一个表可以有多个非聚集索引,也可以没有。
非聚集索引比聚集索引效率低。
1.6、索引选择的列尽量选择小数据类型的列,提高访问速度。
二、脚本创建索引
1)如果未指定 clustered 和 nonclustered,那么默认为 nonclustered。
2)with (drop_existing = on|off),加上这个的意思是如果这个索引还在表上就drop 掉然后在create 一个新的。特别是在聚集索引上使用这个就可以不会引起非聚集索引的重建。
三、视图介绍
3.1、视图
视图是一个虚拟表,由一个或多个表通过查询而定义的,实际不包含数据。
3.2、与表的区别
1)表是存储数据的地方
2)视图存储的是查询语句(索引视图除外,其被具体化了)
3.3、作用
1)可以简化查询
2)视图存储的是查询语句(索引视图除外,其被具体化了)
3.4、缺点
1)只是简化查询,并没有提高查询速度
2)增加了维护成本
3.5、分类
1)标准视图(常用)
存储的是查询定义,没有存储数据。
2)索引视图
被具体化了的视图,能显著提高查询性能,适合大数据量的查询,不适合经常更新基本数据集。
数据是实际存在的,删除视图里的数据,基础表里的数据也被删除。因此不要在索引视图里删除修改数据。
3)分区视图
一台或多太服务器水平连接一组成员表的分区数据。
四、脚本创建视图
4.1、创建标准视图
语法:
create view 视图名
as
T-SQL语句
使用视图就和使用表的方式一样。
4.2、创建索引视图
语法:
create view 视图名 with schemabinding
as
T-SQL语句
注意:1)*不能出现,必须写字段名
2)表名前面要加所有者dbo
4.3、创建分区视图
注意:标准视图与分区视图都不允许删除修改里面的数据,会影响基础表。
索引视图删除对应的数据,基础表内的数据也别删除。
五、存储过程介绍
5.1、存储过程
是一种为了完成特定功能的一个或一组SQL语句的集合。经编译后存储在服务器端的数据库中,可以利用存储过程来加速SQL语句的执行。
调用名称,传入参数,执行来完成特定功能。
5.2、分类
1)系统存储过程
存在于master数据库中,其他数据库中可以直接调用并且不必在前面加上数据库名,创建数据库时,这些系统存储过程在新的数据库中自动创建。
2)自定义存储过程
用户自己创建,为完成特定功能而创建。即可传入参数也可有返回值,表明存储过程执行是否成功。里面可有一个或多个操作。
执行方式:execute/exec 存储过程名 参数列表(多个参数用逗号隔开)
3)优点
提高应用程序的通用性和可移植性;
可以被多次调用,而不必重新再去编写,维护人员可以随时进行修改;
可以更有效管理数据库权限;
提高执行SQL的速度(一次编译,多次调用);
减轻服务器的负担。
4)缺点
需要专门维护;
占用数据空间。
六、脚本创建存储过程
6.1、脚本创建存储过程语法
create procure/proc 存储过程名
--参数列表
as
begin
--SQL语句集合
end
6.2、创建一个简单存储过程
6.3、创建一个带参数的存储过程