SQL Server性能优化(9)聚集索引

一、索引的概念和分类

索引的概念大家都知道,日常开发中我们也会使用常见的聚集索引、非聚集索引。但是除了这两者以外,sqlserver中还提供其他的索引,如:

a. 唯一索引:不包含重复键的索引,聚集索引或者非聚集索引都可以是唯一索引。

b. 包含列的索引:它扩展后不仅包含键列,还包含非键列。

c. 全文索引

d. 空间索引

e. 筛选索引

f. XML

当然以上几种除了a和b基本上没用到过。

二、聚集索引的结构

要想使用聚集索引,必须了解聚集索引的概念以及它的原理。网上对聚集索引描述的资料有很多,最通俗的解释就是拿字典举例:如我们的在新华字典里用拼音查一个汉字“索”的时候,是先从字典最开始几页的字母“s”开始,然后查“suo”,然后找到“索”这个字,根据它的页数,一下翻到这个字所在的页数。

当然这要求,

1. 所有的新华字典里的汉字都按照拼音字母顺序排列。

2. 新华字典前面都有一个拼音的查找附录。

聚集索引也是这个道理,

1. 有一个所有数据的“拼音”列表,即索引。

2. 所有数据根据这个索引在硬盘上有序排列,这个排列顺序就是B树。

B树的概念:http://www.baidu.com/link?url=5cmF2QROgNE6JUpvbu_9oqwYhdtGvn-1WsCae98nB6eK70H6tc4S3s3sKGfvalbOiwHEUblJIAI6mOivaWk5jq&wd=&eqid=ae27fb0e0003091b00000004555ae6b3&ie=UTF-8

聚集索引的结构

时间: 2024-10-05 20:20:15

SQL Server性能优化(9)聚集索引的相关文章

Sql Server 性能优化之包含列

Sql Server 性能优化之包含列 导读:数据数优化查询一直是个比较热门的话题,小生在这方面也只能算是个入门生.今 天我们就讲下数据库包含列这个一项的作用及带来的优化效果 引用下MSDN里面的一段解释: 当查询中的所有列都作为键列或非键列包含在索引中时,带有包含性非键列的索引可以显 著提高查询性能. 这样可以实现性能提升,因为查询优化器可以在索引中找到所有列值:不 访问表或聚集索引数据,从而减少磁盘 I/O 操作 上面这一段什么意思呢? 意思就是说设置好包含列,能提高查询性能,减少IO输出.

大话SQL Server性能优化(MSSQL高并发、性能调控、实践)

大话SQL Server性能优化(MSSQL高并发.性能调控.实践)网盘地址:https://pan.baidu.com/s/1KxdfcQD0XGD3M2ja_Y7UWQ 提取码:435v备用地址(腾讯微云):https://share.weiyun.com/5dTuZJ9 密码:xhmge4 本课程源于一家国内较知名的ERP厂商的一款产品出现性能问题后通过咨询服务解决了性能问题,然后根据自身多年技术培训.项目开发.产品研发与运维管理.软件公司内部咨询等经验,整理了在SQL Server 20

【SQL Server性能优化】运用SQL Server的全文检索来提高模糊匹配的效率

原文:[SQL Server性能优化]运用SQL Server的全文检索来提高模糊匹配的效率 今天去面试,这个公司的业务需要模糊查询数据,之前他们通过mongodb来存储数据,但他们说会有丢数据的问题,我从业务上了解到,显然对他们公司而言,丢数是绝对不能允许的. 另外,他们说之前也用过SQL Server的全文检索,但速度不够快,不如用mongodb快,当然我不太清楚他们所谓快的具体定义,比如查询只需要1秒,还是1分钟.他们的系统现在采用的是SQL Server,通过复制来实现高可用性,因为他们

SQL Server 性能优化(一)——简介

原文:SQL Server 性能优化(一)--简介 一.性能优化的理由: 听起来有点多余,但是还是详细说一下: 1.节省成本:这里的成本不一定是钱,但是基本上可以变相认为是节省钱.性能上去了,本来要投入的硬件就可以减缓投入,从另外一个角度看来它就是节省了钱. 2.增加效率:对于客户来说,性能上去了,他们的工作效率也高了. 3.降低挫折感:性能底下,客户抱怨,无疑是对自己心灵上的打击. 二.性能误区: 性能误区 误区 现实 如果处理器使用率很高,那么需要添加更快的处理器 某一部分导致了性能问题 8

SQL SERVER性能优化综述

一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项. 一.分析阶段 一般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性.可用性.可靠性.安全性需求往往吸引了我们大部分的注意力,但是,我们必须注意,性能是很重要的非功能性需求,必须根据系统的特点确定其实时性需求.响应时间的需求.硬件的配置等.最好能有各种需求的量化的指

SQL Server 性能优化3 该指数(Index)保养

前言 之前的一篇文章介绍了索引来提高数据库的查询性能,这其实仅仅是个开始.也许假设缺乏适当的保养,索引你以前建立的,甚至成为拖累,成为帮凶下降数据库的性能. 寻找碎片 消除碎片索引维护可能是最常规的任务,,议是当碎片等级为 5% - 30% 之间时採用 REORGANIZE 来"重整"索引.假设达到 30% 以上则使用 REBUILD 来"重建"索引.决定採用何种手段和操作时机可能需要考虑很多的因素,下面4条是你必需要考虑的: 备份的计划 server的负载 磁盘剩

SQL Server 性能优化实战系列(二)

SQL Server datetime数据类型设计.优化误区 一.场景 在SQL Server 2005中,有一个表TestDatetime,其中Dates这个字段的数据类型是datetime,如果你看到表的记录如下图所示,你最先想到的是什么呢? (图1:数据列表) 你看到这些数据,是不是觉得这样的设计既浪费了存储空间,又使得这个列的索引增大,查询起来更慢,你也想使用一些其它的数据类型来代替这个datetime吧? 其实大家都是这么想的,这个方向是100%正确的,但是在写这篇文章以前,我进入了两

SQL Server性能优化(12)非聚集索引的组合索引存储结构

一,非聚集索引组合索引 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引).但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引.当表的行数远远大于索引键的数目时,使用这种方式可以明显加快表的查询速度. 同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,如果不特殊说明的话一般是指单一索引.宽索引也就是索引列超过2列的索引. 设计索引的一个重要原则就是能用窄索引不用宽索引,因为窄索引往往比组合索引更有效.拥有更多的窄索引,将给优化程序提供更多的选择余地,这通常

SQL Server性能优化(11)非聚集索引的覆盖索引存储结构

一,非聚集索引的include 非聚集索引的Include属性可以让非聚集索引包含其他列.如 CREATE NONCLUSTERED INDEX [NonIxUser] ON [dbo].[Users] (     [NAME] ASC ) INCLUDE ( [ID], [CreatTime]) GO 这表语句就是在Name列的非聚集索引上添加ID,和CreateTime列. 在上一个介绍中,我们知道在查询NAME = '张三180' 时,会出现RID,同时读取次数是3次 现在加上非聚集索引的

SQL Server性能优化(7)非聚集索引

一,新建测试表 CREATE TABLE [dbo].[Users](     [ID] [int] IDENTITY(1,1) NOT NULL,     [NAME] [char](80) NOT NULL,     [CreatTime] [datetime] NOT NULL ) ON [PRIMARY] 删除默认聚集索引,新建一个在name列上非聚集索引 插入500条数据 查看该表的页的信息 ---开启跟踪标志 DBCC TRACEON(3604,2588) --DBCC TRACEO