sql server 索引学习1
1 什么是聚集和非聚集索引
SQL SERVER提供两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。
其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。
每个表只能有一个聚集索引,因为目录只能按照一种方法进行排序。
2 何时使用聚集索引或非聚集索引
3 索引操作示例语句
-- 创建唯一聚集索引
create unique clustered --表示创建唯一聚集索引
index UQ_Clu_StuNo --索引名称
on Student(S_StuNo) --数据表名称(建立索引的列名)
with
(pad_index=on, --表示使用填充fillfactor=50, --表示填充因子为50%ignore_dup_key=on, --表示向唯一索引插入重复值会忽略重复值statistics_norecompute=off --表示启用统计信息自动更新功能
)-- 创建唯一非聚集索引
create unique nonclustered --表示创建唯一非聚集索引
index UQ_NonClu_StuNo --索引名称
on Student(S_StuNo) --数据表名称(建立索引的列名)
with
(pad_index=on, --表示使用填充fillfactor=50, --表示填充因子为50%ignore_dup_key=on, --表示向唯一索引插入重复值会忽略重复值statistics_norecompute=off --表示启用统计信息自动更新功能
)--创建聚集索引
create clustered index Clu_Index
on Student(S_StuNo)
with (drop_existing=on) --创建非聚集索引
create nonclustered index NonClu_Index
on Student(S_StuNo)
with (drop_existing=on) --创建唯一索引
create unique index NonClu_Index
on Student(S_StuNo)
with (drop_existing=on)create nonclustered index Index_StuNo_SName
on Student(S_StuNo,S_Name)
with(drop_existing=on)
--创建非聚集复合索引,未指定默认为非聚集索引
create index Index_StuNo_SName
on Student(S_StuNo,S_Name)
with(drop_existing=on)--创建非聚集覆盖索引
create nonclustered index NonClu_Index
on Student(S_StuNo)
include (S_Name,S_Height)
with(drop_existing=on)--创建非聚集覆盖索引,未指定默认为非聚集索引
create index NonClu_Index
on Student(S_StuNo)
include (S_Name,S_Height)
with(drop_existing=on)--查看指定表 Student 中的索引
exec sp_helpindex Student --删除指定表 Student 中名为 Index_StuNo_SName 的索引
drop index Student.Index_StuNo_SName--检查表 Student 中索引 UQ_S_StuNo 的碎片信息
dbcc showcontig(Student,UQ_S_StuNo)--整理 Test 数据库中表 Student 的索引 UQ_S_StuNo 的碎片
dbcc indexdefrag(Test,Student,UQ_S_StuNo)--更新表 Student 中的全部索引的统计信息
update statistics Student
参考
https://msdn.microsoft.com/zh-cn/library/ms188783.aspx
sql server 索引学习1相关推荐
- SQL Server索引设计 第五篇
SQL Server索引的设计主要考虑因素如下: 检查WHERE条件和连接条件列: 使用窄索引: 检查列的选择性: 检查列的数据类型: 考虑列顺序: 考虑索引类型(聚集索引OR非聚集索引): 一.检查 ...
- SQL SERVER深入学习学习资料参考
SQL SERVER深入学习学习资料参考 1.微软Webcast<sql server 2000完结篇>. 尽管微软Webcast出了很多关于Sql Server的系列课程,但是最为深入讲 ...
- SQL Server索引总结二
从CREATE开始 通过显式的CREATE INDEX命令 在创建约束时作为隐含的对象 随约束创建的隐含索引 当向表中添加如下两种约束之一时,就会创建隐含索引. 主键约束(聚集索引) 唯一约束(唯一索 ...
- SQL Server 索引结构及其使用(四)
KeyLife富翁笔记 作者: HongYuan 标题: SQL Server 索引结构及其使用(四) 关键字: 分类: 个人专区 密级: 公开 (评分: , 回复: 0, 阅读: 601) ...
- SQL Server数据库学习总结及T-SQL语法使用实战
SQL Server数据库及T-SQL实战 声明 名词解释 SQL Server数据库 安装sql server 数据库中的三种完整性 SQL Server数据库基本操作 创建数据库 指定多个数据库文 ...
- 昨日关注:SQL Server 索引结构及其使用
2005-4-25 [数据库技术] SQL Server 索引结构及其使用(4) # 为解决这个矛盾,笔者后来又添加了一个日期列,其默认值为getdate().用户在写入记录时,这个列自动写入当时的时 ...
- SQL Server 索引结构及其使用(二)(转)
SQL Server 索引结构及其使用(二) 作者:freedk 一.深入浅出理解索引结构 改善SQL语句 很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被 ...
- SQL Server 索引和表体系结构(聚集索引)
原文:SQL Server 索引和表体系结构(聚集索引) 聚集索引 概述 关于索引和表体系结构的概念一直都是讨论比较多的话题,其中表的各种存储形式是讨论的重点,在各个网站上面也有很多关于这方面写的不错 ...
- 【翻译】SQL Server索引进阶:第三级,聚集索引
原文地址: Stairway to SQL Server Indexes: Level 3, Clustered Indexes 本文是SQL Server索引进阶系列(Stairway to SQL ...
最新文章
- Unity -- 材质-Material和预设体-Prefabs
- 多线程设计模式 - Future模式
- 首席架构师眼中的架构应该是怎样的?
- 小米路由器mini无线连接HP1010打印机
- 抖音无水印下载不求人
- 给出a-z,0-9,输出所有的3个字符的组合
- STM32通过SPI读W25Q64的ID时钟分析
- 用shader做一个柿子颜色的过场动画
- YJJ's Salesman HDU - 6447(线段树 单点更新+DP思想)
- 谷歌浏览器chrome官方下载网址
- 20175208 实验一 Java开发环境的熟悉
- 实景三维社区网格化平台,让管理精准!快速!高效!
- sturts2框架知识点(Struts2框架----今天脑子有点炸)
- Android哪个系统占用内存小,哪个安卓模拟器占用的内存小,使用起来又不卡
- 一个公众事件的简单思考(r12笔记第15天)
- “无实物尝百味”通过控制微电流刺激产生味觉—2.环境搭建篇
- 如何修复移动宽带720错误 win8.1
- Yade安装+优化教程
- 易语言 用精易的网页_访问 请求https的时候返回不了数据
- php时间戳,PHP时间戳的实例讲解