索引
是SQL Server编排数据的内部方法
可以快速查找数据,而无须扫描整个表
索引分类
唯一索引:不允许两行具有相同的索引值
主键索引:要求主键中的每个值是唯一的
聚集索引:数据存放的物理顺序与索引顺序相同
非聚集索引:数据存放的物理顺序与索引顺序不相同
复合索引:将多个列组合而成的索引
全文索引:一种特殊类型的基于标记的功能性索引
选择索引列的标准
频繁搜索的列
经常用作查询选择的列
经常排序、分组的列
经常用作连接的列(主键/外键)
以下不适合作为索引列
仅包含几个不同值的列
仅包含几行数据的小型表
视图
是一种虚拟表
通常是作为来自一个或多个表的行或列的子集
视图的作用
筛选表中的数据
防止未经许可的用户访问敏感数据
将多个物理数据表抽象为一个逻辑数据表
使用视图的好处
对于最终用户
结果更容易理解,获取数据更容易
对于开发人员
限制数据检索更容易,维护应用程序更方便
为什么需要存储过程
从客户端(Client)通过网络向服务器(Server)发送 SQL 代码并执行是不妥当的
数据不安全
影响应用程序的运行性能
网络流量大
存储过程
是SQL语句和控制语句的预编译集合
保存在数据库里,可由应用程序调用执行
使用存储过程的优点
模块化程序设计
执行速度快,效率高
减少网络流量
具有良好的安全性
存储过程分类
系统存储过程
用户自定义的存储过程
触发器
是在对表进行增、改或删操作时自动执行的存储过程
用于强制业务规则,可以定义比用 CHECK 约束更为复杂的约束
通过事件触发而被执行的
触发器分类
INSERT触发器:当向表中插入数据时触发
UPDATE触发器:当更新表中某列、多列时触发
DELETE触发器:当删除表中记录时触发
锁
用于多用户环境下保证数据库完整性和一致性
锁的模式
共享锁(S锁)
排他锁(X锁)
更新锁(U锁)
查看锁的手段
使用sys.dm_tran_locks动态管理视图
使用Profiler来捕捉锁信息