SQL SERVER 聚集索引 非聚集索引 区别

BMC远程安装系统实战:浪潮与惠普带外管理配置指南 服务器运维中,带外管理是一项独立于操作系统的硬件管理能力,其核心是BMC(基板管理控制器)。BMC拥有独立的CPU、网口和固件,即使服务器系统崩溃或未安装系统,也能通过管理口远程访问。这项技术的价值在于,运维人员无需进入机房,即可完成远程开关机、挂载ISO镜像、配置RAID等操作,尤其在批量部署或紧急故障恢复场景下,能显著提升效率。基于远程KVM和虚拟介质功能,运维者可以像坐在服务器前一样操作,规避了传统人工进机房的繁琐流程。针对浪潮BMC与惠普iLO两大主流平台,两者在功能逻辑上相通,但界面、许可证和操作 阅读详情
一、理解索引的结构

  索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。

  SQL Server 中数据存储的基本单位是页(Page)。数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 每次读取或写入数据的最少数据单位是数据页。

  下面我们先简单的了解一下索引的体系结构:

  1. 聚集索引结构

  在 SQL Server 中,索引是按 B 树结构进行组织的。

  聚集索引单个分区中的结构:

--建立UserAddDate聚集索引
CREATE CLUSTERED INDEX [IX_AddDate] ON [User]
(
 [AddDate] ASC
)   

  聚集索引(Clustered Index)特点

  • 聚集索引的叶节点就是实际的数据页
  • 聚集索引中的排序顺序仅仅表示数据页链在逻辑上是有序的。而不是按照顺序物理的存储在磁盘上
  • 行的物理位置和行在索引中的位置是相同的
  • 每个表只能有一个聚集索引
  • 聚集索引的平均大小大约为表大小的5%左右

  2. 非聚集索引结构

  非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点:

  1. 基础表的数据行不按非聚集键的顺序排序和存储。

  2. 非聚集索引的叶层是由索引页而不是由数据页组成。

  下图示意了单个分区中的非聚集索引结构:

  包含列的索引

  通过将包含列(称为非键列)添加到索引的叶级,可以扩展非聚集索引的功能。键列存储在非聚集索引的所有级别,而非键列仅存储在叶级别。

  下面举个简单的例子来说明一下聚集索引和非聚集索引的区别:

  我们有一本汉语字典,可以把它的正文本身看做是一个聚集索引,它是按照汉字拼音的开头字母排序的,不再需要查找其他目录。当遇到不认识的字时,需要结合“部首目录”和“检字表”, 先找到目录中的结果,然后再翻到您所需要的页码。通过这种方法查到的目录中字的排序并不是真正的正文的排序方法。把这种看做是一个非聚集索引。

  另外,请注意每个表只能有一个聚集索引。

--建立UserAddDate非聚集索引
CREATE NONCLUSTERED INDEX [IX_AddDate] ON [User]
(
 [AddDate] ASC
)   

  非聚集索引 (Unclustered Index) 特点

  • 非聚集索引的页,不是数据,而是指向数据页的页。
  • 若未指定索引类型,则默认为非聚集索引。
  • 叶节点页的次序和表的物理存储次序不同
  • 每个表最多可以有249个非聚集索引
  • 在非聚集索引创建之前创建聚集索引(否则会引发索引重建)

  二、选择建立哪种索引

  1. 何时创建聚集索引更能提高性能

  Clustered Index会提高大多数table的性能,尤其是当它满足以下条件时:

  独特, 狭窄, 持续增长的,最好是只向上增加。例如:

  • Identity
  • Date, identity
  • GUID (only when using newsequentialid() function)  

  2. 非聚集索引提高性能的方法

  非聚集索引由于B树的节点不是具体数据页,有时候由于这个原因,会导致非聚集索引甚至不如表遍历来的快。但是,非聚集索引有个特性,如果你要查询的内容,在非聚集索引中以及被覆盖到了,则不需要继续到聚集索引,或者RID(heap结构中的行标识符)中去寻找数据了,这时候就可以很大的提高性能,这就是覆盖面(Covering) 的问题。

  由于聚集索引叶子节点就是具体数据,所以聚集索引的覆盖率是100%, 通过提高覆盖面来提高性能的问题也就只有非聚集索引(Nonclustered Indexes)才存在。

  当查询中所有的columns都包括在index上时,我们说这 index covers the query. Columns的顺序在此不重要(Select 时候的顺序不重要,但是Index 建立的顺序可得小心了)。

  在 SQL Server 2005 中,为了提高这种 Covering 带来的好处,甚至可以通过将非键列添加到非聚集索引的叶级别来扩展非聚集索引的功能。

  补充:只有查询在具有高度选择性的情况下,非聚集索引才有优势。

  三、使用聚集索引或非聚集索引的场景 (注:优先级依次为推荐,应,不应)

  四、主键和聚集索引的比较

  以下是一些大众点评网中测试使用的示例:

CHECKPOINT
DBCC DROPCLEANBUFFERS
SET STATISTICS IO ON
declare @d datetime
set @d=getdate()
SELECT * FROM User WHERE AddDate>'2008-06-01' AND AddDate<'2008-06-10'
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
--(45077 行受影响)
--表'User'。扫描计数1,逻辑读取1103 次,物理读取2 次,预读1090 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。
--2543
CHECKPOINT
DBCC DROPCLEANBUFFERS
SET STATISTICS IO ON
declare @d datetime
set @d=getdate()
SELECT * FROM User WITH (INDEX=IX_AddDate) WHERE AddDate>'2008-06-01' AND AddDate<'2008-06-10'
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
--(45077 行受影响)
--表'User'。扫描计数1,逻辑读取45165 次,物理读取133 次,预读141 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。
--3860 

  五、使用索引的代价

  • 索引需要占用数据表以外的物理存储空间
  • 创建索引和维护索引要花费一定的时间
  • 当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

引用: http://kb.cnblogs.com/page/144409/

【免费】最新区块链钱包和私钥的助记词碰撞器,使用python开发 最新钱包私钥助记词碰撞器,搏一搏单车变摩托! 阅读详情

相关推荐

FPGA实现高效数字下变频:CORDIC与CIC滤波器的Verilog优化设计

本文深入探讨了FPGA实现高效数字下变频的技术方案,重点介绍了CORDIC算法与CIC滤波器的Verilog优化设计。通过详细的算法原理分析、FPGA实现技巧和实战经验分享,展示了如何利用CORDIC的旋转运算替代乘法操作,以及CIC滤波器在降采样中的高效性能。文章还提供了完整的系统集成方案和资源优化策略,为无线通信和雷达信号处理领域的工程师提供了实用参考。

redis7keeper的博客 723

SQL Server中聚集索引和非聚集索引的区别有哪些?

聚集索引与非聚集索引的根本区别是表记录的物理排序顺序和索引的排序顺序是否一致。其主要区别有以下几点: 聚集索引一个表只能有一个,非聚集索引一个表可以存在多个。 聚集索引存储记录是物理上连续存在,物理存储按照索引排序;而非聚集索引是逻辑上的连续,物理存储并不连续,物理存储不按照索引排序。 聚集索引查询数据比非聚集索引速度快,插入数据速度慢(时间花费在「物理存储的排序」上,也就是首先要找到位置然后插入);非聚集索引反之。 索引是通过B+Tree的结构来描述的,聚集索引的叶节点

qq_33246702的博客 2626

张量/数组存储方式与向量化展开/展平、view、reshape、permute对比

对于一个Tensor来说,我们可以认为它有两种存储方式。

欢迎关注,共同进步! 3434

SQL Server中的聚集索引和非聚集索引有什么区别

3. 聚集索引包含完整的数据记录,而非聚集索引仅包含索引字段和指向实际数据的指针:对于聚集索引,索引本身就是数据本身,因此查询时无需再去查找实际数据;而对于非聚集索引,它只包含部分列的值和链接到实际数据行的指针,查询时需要先通过非聚集索引查找到实际数据行,再获取完整的数据。2. 聚集索引决定了数据的物理存储顺序,而非聚集索引则是逻辑排序:对于聚集索引,表的数据按照索引键的顺序进行排列,因此查询时可以直接使用聚集索引来查找数据。而非聚集索引则不受此影响,因为它们并不改变数据的物理存储顺序。

qq_51980838的博客 1466

Halcon实战:5分钟搞定线序颜色检测(附完整代码解析)

本文详细介绍了如何使用Halcon在5分钟内实现工业级线序颜色检测的高效方案。通过机器视觉技术,结合实战项目经验,提供完整的代码解析和优化技巧,帮助开发者快速构建鲁棒性强、准确率高的检测系统,适用于电子制造和汽车线束等行业。

weixin_29098367的博客 441

VIVADO网表文件DCP和EDF

为了便于模块化设计,同时保护自己的知识产权,Xilinx VIVADO 提供两种代码封装方法:DCP文件和edf文件。

u014035968的博客 1万+

SQL Server索引概要(3)-聚集索引和非聚集索引的区别

索引用于加速 SQL Server 中的查询过程,从而提高性能。它们类似于教科书索引。 SQL Server 中有两种类型的索引:聚集索引和非聚集索引。 本文介绍了聚集索引和非聚集索引的存储方式以及差异。

信天翁的博客 2026

halcon 查找圆形

先找到大概位置进行拟合,然后再以拟合出的位置作为测量的大概位置进行找圆;

qq_59062726的博客 734

数据库索引的基础知识

 一、理解索引的结构   索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。   SQL Server 中数据存储的基本单位是...

weixin_30779691的博客 358

用Python搞定超效率SBM模型:从数据清洗到结果可视化全流程指南

本文详细介绍了如何使用Python实现超效率SBM模型,从数据清洗到结果可视化的全流程指南。超效率SBM模型作为传统DEA的进化版本,能有效处理非期望产出(如环境污染)并对高效单元进行精细排序。通过实战案例和代码示例,帮助读者掌握这一先进模型的Python实现技巧,提升效率评估的准确性和可视化效果。

silver的专栏 650

V-REP(Cooprliesim EDU)自学笔记 实现UR5机械臂末端按轨迹移动

V-REP(Cooprliesim EDU)自学笔记 实现UR5机械臂末端按轨迹移动

xu_white的博客 7583

聚集索引与非聚集索引的区别

聚集索引和非聚集索引是SQL SERVER 数据库中的索引类型。一、聚集索引1.定义聚集索引中键值的逻辑顺序决定了表中相应行的物理存储位置,因此一个表中只能有一个聚集索引。索引的逻辑顺序与相应行的物理位置一致。2.聚集索引的适用情形 我们可以在针对以下情况建立聚集索引 经常对某些列进行范围搜索,例如查询一段日期范围。 当找到包含第一个数据的行之后,便可以确保包含后续索引值的行在物理位置上相邻。

u011300968的博客 6377

【人工智能】大模型可以分为L0层:基础大模型/通用大模型、L1层:行业大模型、L2层:细分场景模型三个层级

大模型确实可以分为L0、L1、L2三个层级,这种分层架构不仅有助于提升模型的泛化能力和适应性,还能更好地满足不同行业和场景的需求。华为盘古大模型的分层架构(L0、L1、L2)在多个证据中得到了详细描述和验证。例如,华为云盘古大模型3.0明确分为L0基础大模型、L1行业大模型和L2场景模型三层架构。此外,其他来源也一致支持这一分层架构,如用友网络的企业服务大模型、智谱AI的GLM-4系列等。

奶爸的编程之路,也就一周冷个三天 3982

SQL Server 聚集索引和非聚集索引的区别分析 发布日(未知日期)

SQL Server 聚集索引和非聚集索引的区别分析发布日期:2011/9/24 12:42:00 来源:作者: 点击:39 - 集合索引:物理存储依照索引排序   非集合索引:物理存储不依照索引排序   上风与缺陷   集合索引:插进数据时速率要慢(时光消费在“物理存储的排序”上,也就是起首要找到地位然后插进)   查询数据比非集合数据的速率快   汉语字典的┞俘文自

wycSun1991的专栏 856

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SQL SERVER 聚集索引 非聚集索引 区别

一、理解索引的结构 索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。 SQL Server 中数据存储的基本单位是页(Pag...

我的优快云博客之家 630

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SQL Server中的聚集索引和非聚集索引有什么区别?

Indexes are used to speed-up query process in SQL Server, resulting in high performance. They are similar to textbook indexes. In textbooks, if you need to go to a particular chapter, you go to th...

culuo4781的博客 1117

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SQL Server唯一索引UNIQUE和聚集索引、非聚集索引的区别

<br />索引 实际上是一组指向表中数据的指针,索引的排列顺序其实就是这组指针的顺序. <br />聚集索引 :表的物理存储顺序与指针(即逻辑)顺序相同 <br />非聚集索引 :物理与逻辑顺序不同 <br /><br /><br />因为一个表只能有一个物理顺序,所以,聚集索引的个数最多只能是1. <br /><br /><br />唯一索引 是给所做的索引增加了唯一性的约束,添加,修改索引列中数据时,不允许出现重复值.它可以是聚集索引,也可以是非聚集的,就看你如何定义

小易的坐骑 5030

SQL Server 聚集索引和非聚集索引的区别总结

从下面几个方面总结: 1、定义 聚集索引:物理存储按照索引排序,就像字典正文,我们按照正文的字母顺序就能找到我们的记录。(对查字典很熟 的人) 非聚集索引:物理存储不按照索引排序,就像偏旁查字法目录,每个偏旁目录下的字的页码不是顺序的。 2、比较 聚集索引:插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入)查询数据比非...

wengyupeng 蜗牛一步一步向前。。。 2150

sql server 2005的索引的概述(聚集索引和非聚集索引的区别)

数据库中索引原理 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: 其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就

betxiaocan的专栏 518

sql server里面聚集和非聚集索引类型有什么区别?

<br />聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。<br /><br />聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直

334

SQL Server 聚集索引和非聚集索引的区别

SQL Server 聚集索引和非聚集索引的区别 聚集索引:物理存储按照索引排序 非聚集索引:物理存储不按照索引排序 优势与缺点 聚集索引:插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入)                  查询数据比非聚集数据的速度快                汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会

lqlanxin2008的专栏 406

SQL Server 理解索引的定义、作用和工作原理,包括聚集索引和非聚集索引的区别。

在 SQL Server 中,索引是一种特殊的数据结构,它是对数据库表中一列或多列的值进行排序的一种存储结构。索引就像一本书的目录,通过它可以快速定位到包含特定值的行,而不必逐行扫描整个表。

weixin_39604653的博客 1220
上一篇: 数据库触发器
下一篇: (转载)数据库 索引 收藏一下
孤鸿踏雪
博客等级 码龄14年 23粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值