SQLserver学习day08 视图和索引
来源:互联网 发布:淘宝无法开店 编辑:程序博客网 时间:2024/05/22 02:25
视图
视图:一个视图是由select语句组成的查询的虚拟表,从多个表中提取数据,并以单个表的形式展现数据,视图是一个虚拟表,内容由查询语句决定,视图中并不存在数据,数据存放在视图引用的原始表中。
创建视图
SSMS创建视图
右键视图进行创建,选中要创建的表和要选择的列即可。
选择创建视图的表
选择要显示的列
查看视图的内容
SQL语句创建视图
语法:
CREATE VIEW 视图名称
AS
select语句
--视图的数据来自于一张表CREATE VIEW vw_view2AS SELECT UserId,UserName,Phone FROM UserInfoGOSELECT * FROM vw_view2
--视图中的数据来自多张表--对视图进行ORDER BY排序时,前面必须加上TOP关键字CREATE VIEW vw_view3AS SELECT UserInfo.UserId,UserInfo.UserName,OrderInfo.Paymoney FROM UserInfo INNER JOIN OrderInfo ON UserInfo.UserId=OrderInfo.UserIdGOSELECT * FROM vw_view3
使用视图的优缺点和注意事项
优点:
- 清晰的看到特定数据
- 简化数据的操作,容易维护
安全性,只能查看和修改能见到的数据
缺点性能,操作视图比操作基本表要慢
- 修改限制,对于某些复杂的视图,可能无法修改
注意事项
- 创建视图时不能使用INTO关键字
- 不能引用临时表和表变量
索引
索引:索引是一种单独的、物理的数对数据库表中一列或多列的值进行排序的一种存储结构。
索引主要目的是提高SQLserver系统的性能,加快数据的查询。
SQL索引有两种,分为聚集索引和非聚集索引
聚集索引:正文内容本身就是按照一定规则排序。
非聚集索引:目录纯粹是目录,正文是正文的排序方式。
例子:查字典可以按照拼音和部首两种方法来查,拼音来查的话字都是连续的,这就是聚集索引。
按照部首来查的话,例如张和弘,两者在目录上是相邻,在实际的正文中却离得很远,这叫非聚集索引。聚集索引是物理存储上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。
建立索引的一般原则
- 每个表只能创建一个聚集索引
- 每个表最多可创建249个非聚集索引
- 在经常查询的字段上建立索引
- 外键列可以建立索引,主键列必须建立索引
- 重复值比较多,查询较少的列不要建立索引。
索引的创建和使用
填充因子:索引存在于索引页中,填充因子是指定索引所占的索引页的比例,如果我们指定索引因子为100,那么我们如果在第一个索引页插入数据时,然后从插入的行起后面自动顺延,会自动增加索引页。填充因子为100意味着每个索引页100%被填满,索引因子为50意味每个索引页50%被填满。
SSMS创建索引
选择数据表,选择列,右键创建索引,可以选择是否是唯一,是否是聚集。
SQL语句创建索引
语法:
CREATE [UNIQUE] [CLUSTERED/NONCLUSTERED]INDEX 索引名ON 表名(列名)[WITH FILLFACTOR=X]UNIQUE 唯一索引CLUSTERED/NONCLUSTERED 聚集索引或非聚集索引FILLFACTOR 填充因子 (0-100)
--给UserInfo表中的地址列添加索引CREATE NONCLUSTEREDINDEX IX_UserIndo_AddressON UserINFO(Address)WITH FILLFACTOR=50
使用索引
--查询用户地址是河南的又哪些SELECT * FROM UserInfoWITH (INDEX=IX_UserIndo_Address)--通过with指定哪个索引进行查询WHERE Address LIKE '%河南%'
平常使用中,不用特别的指定索引,sqlserver会自动的根据索引去进行优化查询。
重新生成和组织索引
为什么需要重新生成和组织索引?
当对索引所在的数据表进行插入,删除和更新等操作时,会导致索引碎片的产生,当碎片非常多时,会降低查询性能,导致程序响应缓慢。
一般碎片比例大于30%使用重新生成索引。
小于30%大于5%使用重新组织索引。
小于5%不必处理。
查看碎片的方法。
选择数据表点开,右键索引,选择重新组织索引。
然后选择管理里的维护计划。
然后右键维护计划,选择维护计划向导
然后选择重新组织索引。一直next即可。
- SQLserver学习day08 视图和索引
- sqlserver索引和视图
- SqlServer 视图索引
- SQLserver学习(四)——T-SQL编程之事务、索引和视图
- Oracle学习笔记day08——索引
- SQLserver笔记之索引和视图的管理
- 【黑马程序员】SQLserver笔记之索引和视图的管理
- sqlserver 建立索引视图各问题!
- SqlServer在视图上创建索引
- sqlserver 建立索引视图各问题!
- 五、视图和索引
- 数据库视图和索引
- 索引和视图
- 数据库视图和索引
- hive视图和索引
- 视图和索引
- 索引和视图
- 事务、视图和索引
- 【淘淘】Spring整合Quartz框架
- 斐波那契数列 矩阵求法 优化
- android不断开关蓝牙
- rgba中的a是指?CSS之RGBA颜色指南
- 警告:不能读取 AppletViewer 的属性文件解决
- SQLserver学习day08 视图和索引
- NYoj 906杨辉三角(二维数组)
- 勾选问题
- [2016/12/6]计算两个大数的和
- C# 如何关联键盘按钮 (KeyChar/KeyCode值 KeyPress/KeyDown事件 区别)
- docker搭建 存储 运行 容器
- Timer——倒计时小玩具
- 拦截器
- Play Framework 2.5.x 测试环境搭建