聚集索引,是一种指明表数据物理存储顺序的索引.在聚集索引中,行的物理存储顺序与索引顺序完全相同,即索引的顺序决定了表中行的存储顺序.表数据按照指定作为聚集索引的一个或多个键列排序并存储.聚集索引类似于一本字典,字典按照字母顺序存储信息,并提供引导字帮助用户快速定位信息的位置,在同一页上找到数据和它的引导字.相似的,聚集索引含有索引页和实际数据页,数据页组成聚集索引的最底层(叶子节点).根节点中的每行将分别指向分支节点,分支节点的行又将指向其他的分支节点,最后一组分支节点将最终指向叶子节点.当你到达索引的最底层(即叶子节点)时,也就已经到达实际数据页了.因为数据按照一个指定的顺序物理地存储,所以你只能为每个表创建一个聚集索引.
非聚集索引与聚集索引不同,它并不在物理上排列数据,即索引中的逻辑顺序并不等同于表中行的物理顺序.索引仅仅记录指向表中行的位置的指针,这些指针本身是有序的,通过这些指针可以在表中快速地定位数据.在它的叶子节点中不含有实际表数据,取而代之的是,索引本身完全与数据分离,就像一本在书的后面带有索引的书(索引只是指明到哪一页,而数据并不与索引本身在一起).非聚集索引的叶子节点含有索引行,用于存储决定行确定位置的索引数据和信息.位置信息可以是两种类型之一,取决于表上是否存在聚集索引.如果有聚集索引,那么对于每行,聚集索引的键值存储在非聚集索引的叶子节点之中,作为该行的定位器.这个值可以被直接用来定位数据,它位于聚集索引的叶子节点之中.如果聚集索引不是一个惟一索引, SQL Server就自动地为所有相同的索引键值分配一个内部值,让它们惟一地以非聚集索引方式使用.这个内部值对于用户来说是不可见的.如果表上没有聚集索引,那么每个叶子节点含有一个行ID作为行的定位器,而不是聚集索引的一个键值.行ID是一个指针,由文件ID,页数目和页中的行数目组成.这个指针能够精确地指示在哪里可以找到行,所以一旦到达行ID,只需要再进行一次I/O便可以读取数据行.
分享到:
相关推荐
在MySQL里,聚集索引和非聚集索引分别是什么意思,有什么区别? 在MySQL中,InnoDB引擎表是(聚集)索引组织表(clustered index organize table),而MyISAM引擎表则是堆组织表(heap organize table)。 也有人把聚集索引...
B+树介绍,为什么选择B+树,非聚集索引 聚集索引 第一点、第二点、第三点 不建议使用过长的字段,不建议使用非自增字段作为主键 什么条件下使用索引? 索引选择性,行数前缀索引 所谓索引的选择性是指不重复的索引值...
mysql结构和索引简介,包含日志文件和数据文件的分析。索引的分类及其。聚集索引和非聚集索引的概念和区别 及其简单介绍B Tree 和B+ Tree的区别和概念
非聚集索引(三)创建索引唯一索引:聚集索引:非聚集索引:(四)删除索引(五)索引的优点(六)索引的缺点 三、触发器(一)触发器概念(二)触发器的优点(三)触发器的作用(四)触发器的分类1.DML(数据操作...
聚集索引与非聚集索引的区别 事务四大特性(ACID)原子性、一致性、隔离性、持久性? 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别? MySQL常见的存储引擎InnoDB、MyISAM的区别?【~】 ...
9.4.3 聚集表上的非聚集索引 9.5 索引创建的基本方法 9.6 基本的索引使用模式 9.6.1 使用聚集索引 9.6.2 使用非聚集索引 9.6.3 使用唯一索引 9.7 高级的索引使用案例 9.7.1 外键索引 ...
下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值;对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个常识,对此不作具体详细阐述。 这里主要...
总体实验目的 1)理解视图的概念 2)了解数据表的结构特点 ...6)学会创建唯一、聚集、非聚集以及复合索引 7)学会查看和修改索引选项,以及给索引改名和删除索引 9)学会数据汇总、连接查询、嵌套查询的方法
视图是从一个或几个基本表中导出的表,它与基本表不同,是一个虚表。 联系:视图对应的数据仍然存放在导出视图的表中,视图是一个虚表。 区别:一个(或多个)基本表对应一个存储文件,视图本身不独立存储在数据库...
9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令生成即时代码 9.5 流控制语句 9.6 小结 第10章 高级编程 10.1 细看存储过程 10.2 表值参数(TVP) 10.3 调试 10.4...
9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令生成即时代码 9.5 流控制语句 9.6 小结 第10章 高级编程 10.1 细看存储过程 10.2 表值参数(TVP) 10.3 调试 10.4...
9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令生成即时代码 9.5 流控制语句 9.6 小结 第10章 高级编程 10.1 细看存储过程 10.2 表值参数(TVP) 10.3 调试 10.4...
9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令生成即时代码 9.5 流控制语句 9.6 小结 第10章 高级编程 10.1 细看存储过程 10.2 表值参数(TVP) 10.3 调试 10.4...
首先, 让我们建立检索表的全文检索,全文检索要求唯一索引,故需要在相关表建立唯一聚集索引。 第二步,使用SQL DDL或者SQL Server Management Studio建立表的全文检索。 1)使数据库支持全文检索。 图...
9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令生成即时代码 9.5 流控制语句 9.6 小结 第10章 高级编程 10.1 细看存储过程 10.2 表值参数(TVP) 10.3 调试 10.4...
9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令生成即时代码 9.5 流控制语句 9.6 小结 第10章 高级编程 10.1 细看存储过程 10.2 表值参数(TVP) 10.3 调试 10.4...
系统需求是比用户需求更具有技术特性的需求陈述,是提供给开发者或用户方技术人员阅读的,并将作为软件开发人员设计系统的起点与基本依据。主要包括:功能、数据、性能、安全等诸多方面的需求问题。 2.需求分析过程 ...
14关系数据库常用的存取方法有索引方法、聚簇方法和HASH方法 15数据库的维护工作:1、数据库的转储和恢复2、数据库的安全性、完整性控制。3、数 据库性能的监督、分析和改造4、数据库的重组织与重构造 16笛卡儿积...