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------------------- 现在,我们希望从 " ...
随机推荐
- webapp开发之需要知道的css细节
引言 首先说明一下,本文分享对象是涉世未深的移动开发者,至于有经验的开发者可以自行绕道. 说来惭愧,做了几年pc端的前端开发,很少接触到webapp的移动端开发.如今有机会参与webapp的开发,发现 ...
- 阅读《深入理解JavaScript定时机制》
鸟哥的这篇<深入理解JavaScript定时机制>从javascript线程角度分析了setTimeout和setInterval两个定时触发器的实现原理. 看完的体验就是主要要记住两点: ...
- QCustomplot使用分享(六) 坐标轴和网格线
一.概述 前边已经写了5篇对QCustomPlot的讲解,看过上述的几篇文章后,基本就能做一些简单的使用了,但是如果想要做到高度的控制图表,那么坐标轴将是很重要的一部分,因为坐标轴就是图表的一个参考系 ...
- 快速暴力解决Eclipse ADT和Android Studio兼容问题,创建同时兼容ADT和AS的安卓工程
环境:AS 2.1.2+Java1.7+Gradle 2.14+ADT 24.0.2+MyEclipse 2015 前言:因为比赛要求使用ADT,而我本身比较习惯使用AS开发,遂想办法打造兼容两个ID ...
- error LNK1281: 无法生成 SAFESEH 映像 LNK2026 模块对于 SAFESEH 映像是不安全的 VS2015 /win10
平台 VS2015 /win10 错误 LNK1281 无法生成 SAFESEH 映像. 错误 LNK2026 模块对于 SAFESEH 映像是不安全的. 将 release 改成 debug
- C#中国象棋+游戏大厅 服务器 + 客户端源码
来源:www.ajerp.com/bbs C#中国象棋+游戏大厅 服务器 + 客户端源码 源码开源 C#版中国象棋(附游戏大厅) 基于前人大虾的修改版 主要用委托实现 服务器支持在线人数,大厅桌数的设 ...
- GridView 用 checkbox 全选并取值
方法一,用 js 实现 <script type="text/javascript"> //<![CDATA[ function CheckAll(oCheckb ...
- LeetCode2:Median of Two Sorted Arrays
题目: There are two sorted arrays A and B of size m and n respectively. Find the median of the two sor ...
- bootstrap 学习片段
1. 只要单击按钮添加了data-toggle="dropdown"属性, 在单击按钮的时候,默认隐藏的下拉列表就会显示出来 <div class="row&quo ...
- MySQL Plugin 'InnoDB' init function returned error一例
早上上班后,测试说演示环境挂了,维护上去看了下,启动报错了: XXXXXX08:30:47 mysqld_safe Starting mysqld daemon with databases from ...