MS SqlServer学习笔记(索引)
1.索引分类
MS SqlServer提供了两种索引:聚集索引和非聚集索引;
- 聚集索引是将数据按照索引的顺序存放
- 非聚集索引是将索引和数据分离存放,通过指针将二者联系到一起。
因为两种索引对比:
- 使用聚集索引查询效率更高,但对表的更新效率影响较大,因此适用于更新读写比较大的表,例如商品详情(创建后很少改动,查看的频率却相对较高)
- 使用非聚集索引则查询效率较低,对表的更新效率影响较小,适用于对查询需求不大打表,例如日志表
聚集索引注意点:
- 聚集索引在一个表中只能有一个,但是不限于一列,可以是包含多个列的组合索引
- 虽然可以多列,但是列越少越好
- 创建聚集索引的列的重复性越低越好,因为如果聚集索引不是唯一值,SQL SERVER会生成额外的标识信息以区分数据
- 适合使用在返回一个返回值的场合:BETWEEN...AND , >= , <= , > , <
- 适合返回大型结果集的查询
- 适合被连续访问的列
- 适合经常被连接及Group By的列
- 最好使用窄列或窄列组合作为聚集索引列
- 不适合频繁更改的列(由于表是按照索引排序的,索引的更新将导致数据整行移动
非聚集索引注意点:
- 非聚集索引可以看成是高效率查询数据的一种途径。例如对人群进行筛选可以从年龄,收入,性别等多种角度切入,每个角度都可以建立一个非聚集索引
创建聚集索引和非聚集索引的列是有要求的,以下类型无法创建索引:
- binary、varbinary
- ntext、text、image
- varchar(max)、nvarchar(max)
- uniqueidentifier
- rowversion、timestamp
- sql_variant
- 精度大于 18 位的 decimal 和 numeric
- 标量大于 2 的 datetimeoffset
- CLR 类型(hierarchyid和空间类型)
- xml
如果使用以上类型的列,会出现错误【表'TABLE_NAME'中的列 'COLUMN_NAME' 的类型不能用作索引中的键列。】
使用索引的好处:能够根据查询要求,迅速缩小查询范围,避免全表扫描。
相关参考
MS SqlServer学习笔记(索引)的更多相关文章
- SQLServer 学习笔记之超详细基础SQL语句 Part 5
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 4------------------- 21使用默认 默认(也称默认值 ...
- Bootstrap~学习笔记索引
回到占占推荐博客索引 bootstrap已经用了有段时间了,感觉在使用上还是比较容易接受的,在开发人员用起来上,也还好,不用考虑它的兼容性,手机,平台,PC都可以有效的兼容. bootstrap官方a ...
- SQLServer学习笔记系列6
一.写在前面的话 时间是我们每个人都特别熟悉的,但是到底它是什么,用什么来衡量,可能很多人会愣在那里.时间可以见证一切,也可以消磨一切,那些过往的点点滴滴可思可忆.回想往年清明节过后,在家乡的晚上总能 ...
- SQLServer学习笔记系列5
一.写在前面的话 转眼又是一年清明节,话说“清明时节雨纷纷”,武汉的天气伴随着这个清明节下了一场暴雨,整个城市如海一样,朋友圈渗透着清明节武汉看海的节奏.今年又没有回老家祭祖,但是心里依然是怀念着那些 ...
- SQLServer学习笔记系列3
一.写在前面的话 今天又是双休啦!生活依然再继续,当你停下来的时候,或许会突然显得不自在.有时候,看到一种东西,你会发现原来在这个社会上,优秀的人很多,默默 吃苦努力奋斗的人也多!星期五早上按时上班, ...
- SQLServer学习笔记系列2
一.写在前面的话 继上一次SQLServer学习笔记系列1http://www.cnblogs.com/liupeng61624/p/4354983.html以后,继续学习Sqlserver,一步一步 ...
- SQLServer学习笔记<>相关子查询及复杂查询
二.查询缺少值的查询 在这里我们加入要查询2008年每一天的订单有多少?首先我们可以查询下订单表的订单日期在2008年的所有订单信息. 1 select distinct orderdate,coun ...
- docker~学习笔记索引
回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 12(The End)
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 11------------------- 现在,我们希望从 " ...
随机推荐
- 内存中OLTP(Hekaton)的排序警告
内存中OLTP是关于内存中的一切.但那只是对了一半.在今天的文章里我想给你展示下,当你从内存读取数据时,即使内存中OLTP也会引起磁盘活动.这里的问题是执行计划里,不正确的统计信息与排序(sort)运 ...
- [Tool] PowerDesigner
一般项目的生命周期: 1.需求分析 2.需求规格说明书 3.总体设计 4.详细设计 5.编码实现 6.测试,试运行. 7.验收 8.后期维护 PowerDesigner 可以把软件生命周期的每一个阶段 ...
- [SQL] SQL SERVER基础语法
Struct Query Language 1.3NF a.原子性 b.不能数据冗余 c.引用其他表的主键 2.约束 a.非空约束 b.主键约束 c.唯一约束 d.默认约束 e.检查约束 f.外键约束 ...
- Spring基础——一个简单的例子
一.学习版本 spring-framework-4.0.0 二.导入 jar 包: 三.在类路径下创建 Spring Config 文件:ApplicationContext.xml <?xml ...
- sprint3(第十天)
因为近期准备四六级考试还有准备期末的作业,任务比较多,所以进度落下了很多,没有完成预期的计划. 燃尽图
- dp --- CSU 1547: Rectangle
Rectangle Problem's Link: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1547 Mean: 给你一些宽为1或2 的木 ...
- Orleans 之 监控工具的使用
这一节,我们来说说orleans 中的几个实用工具,OrleansHost.OrleansCounterControl.OrleansManager.ClientGenerator. 1.Orlean ...
- ASP.NET的路由
之前在探讨ASP.NET MVC的路由时,无意发现原本ASP.NET也有路由机制的.在学习MVC的路由时觉得这部分的资料不太多,不怎么充实(也许是我不懂得去看微软的官方文档).后来也尝试一下ASP. ...
- 用javascript去掉字符串空格的办法
今天遇到了以关于JavaScript 中怎么去掉 字符串中前后两段的空格 ,我只好向就得js中也后Trim() 函数,后来试试了不 行,就网上找了下解决方法,其中用到了正则表达式 ,整理了下: < ...
- AC自动机---Searching the String
ZOJ 3228 题目网址:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=16401 Description Little ...