索引介绍
1.索引的作用:数据的查询 处理速度 ---应用系统成败的标准。 最普遍---优化方式
2.索引是什么?一本书 目录 查找
索引---目录,快速的定位我们要查找的数据,而不必去扫描整个表。
---从而可以加快我们查询的速度。---提高系统的性能。
3.索引有缺点:占用存储空间,索引并不是越多越好,索引并不总是能提高系统性能的。
4.索引的目的:可以更加快速高效地查询数据,减少系统的响应时间。
索引分为 聚集索引 非聚集索引
主键 唯一索引
聚集索引:Clustered 逻辑顺序与物理顺序是一致的 最多只能有一个,可以没有
非聚集索引:NonClustered 逻辑顺序与物理顺序是并不一致的。 可以有多个,也可以没有
非聚集索引比聚集索引 效率低。
如果需要多个列上建立索引,这些列建立组合索引。
列:小数据类型的, 访问速度特别快。
索引是看不见的,但是如果你创建了索引,在查询大数据的时候,它的优势就是显而易见的。
创建索引
--默认非聚集
--聚集 主键索引
create clustered index PK_UserInfos
on UserInfos(UserId)
with
(
drop_existing=on --先删除原来,create一个新的 off 不删除原有的,提示一个错误,索引已存在
)
--唯一非聚集索引
create unique nonclustered index uq_UserInfos
on UserInfos(UserName)
with
(
drop_existing=on,
pad_index=on, --当设置fillfactor才有用
fillfactor=50,--指定创建索引时,每个索引页的数据占索引页大小的百分比
ignore_dup_key=on
)
--读写比:100:1 100
-- 读小于写: 50--70
--读写各一半:80--90
--复合索引:多个列上建立的索引
create nonclustered index Index_UserInfos
on UserInfos(UserName,DeptId)
with
(
drop_existing=on
)
视图介绍
视图:虚拟表 由一个或多个表通过查询而定义的 将查询定义保存起来,实际不包括数据。
与表的区别:表存储数据的地方,视图存储的是查询语句(索引视图除外,具体化了)
作用:简化查询 增加数据的保密性 安全性上得到保证
缺点:只是简化查询,并不提高查询速度 增加了维护成本
分类:标准视图 :存储查询定义 没有存储数据。
索引视图(被具体化了的,创建了索引,显著提高查询性能,聚合了很多行的查询,不太适合经常更新基本数据集)
分区视图:一台或多台服务器间水平连接一组成员表的分区数据。
创建视图
--标准视图
alter view vUserInfosNew
as
--T-SQL 查询语句
select u.*,d.DeptName
from UserInfos u
inner join DeptInfos d
on d.DeptId=u.DeptId
go
--使用视图 就和使用表一样
select * from vUserInfosNew
where DeptId>1
order by UserId desc
--索引视图 适合于聚合多行数据的情况下
--数据是实际存在,删除视图里的数据,基础表里的数据也被删除
--索引视图里不要去删除修改数据
-- * 必须写字段名,表名前面要所有者 dbo
create view vUserInfos_Index with schemabinding
as
select UserId,UserName,Age from dbo.UserInfos
go
--使用
select * from vUserInfos_Index
--索引视图创建唯一聚集索引
create unique clustered index uq_vUserInfos_Index
on vUserInfos_Index(UserId)
go
--标准视图与分区视图 都不允许删除修改里面的数据,会影响基础表
--索引视图 删除了,对应的基础表数据也被删除了,慎用 。
--分区视图
create view vTestInfos
as
select * from Test
union all
select * from Test3
go
--使用视图
select * from vTestInfos
学习笔记。