问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-25 11:52

我来回答

3个回答

懂视网 时间:2022-04-30 03:32

页的指针。IAM按照数据页的顺序存放数据页的指针。数据页之间并无直接链接。

接下来查看IAM的信息,如下:

Slot 0 = (1:79)                      Slot 1 = (1:89)                      Slot 2 = (1:90)

Slot 3 = (1:93)                      Slot 4 = (1:94)                      Slot 5 = (1:109)

Slot 6 = (1:110)                     Slot 7 = (1:114)  

IAM: Extent Alloc Status Slot 1 @0x592EC0C2

 

(1:0)        - (1:176)      = NOT ALLOCATED                              

(1:184)      - (1:192)      =     ALLOCATED                              

(1:200)      - (1:376)      = NOT ALLOCATED 

加亮部分表明了IAM对应的分区信息,以及第一个数据页面指针指向79页。这与我们查询出的first_page值是一致的。一个IAM页面对应8个数据页,当超过8个数据页时,系统会从其对应的4GB空间(约512000个页面)中分配统一区的页面。当数据页超过可分配的页面数时,建立新的IAM页。

这里只有8个slot,8个临时存放数据页,当分配数据页超过8个混合分区后,系统会为数据表分配统一分区。(这里的每一个分配区间都是从区的第一个开始算的,比如说192那个指的是192-199)

每一个指针都指向一个数据页。当分配数据页超过8个混合分区后,系统会为数据表分配统一分区。这里,系统为数据表分配184~191, 192~199两个统一分区。每个分区包含8页,加上8个混合分区的页面,一共是25个页面。这25个页面中,使用了19个数据页,加上1个IAM页共使用了20个页面。因为统一分区是顺序分配的, 所以可以计算出从195~199的页面没有被使用。用DBCC可以验证这个推算。

下面我们把插入的数据删除,然后再查看IAM的页面分配情况,发现页面分配不会因为数据删除而改变,数据页内仅仅是将数据清空而已。

SQL存储原理及聚集索引、非聚集索引、唯一索引、主键约束的关系(新)

标签:

热心网友 时间:2022-04-30 00:40

数据库的索引,听起来挺神秘的,仔细想想。这些索引,其实就是平时咱们查东西时候常用的两种手段。无非就是为了提高我们找东西的效率而已。那么我们平时又是怎么查东西呢?

聚集索引:

聚集索引,来源于生活尝试。这中索引可以说是按照数据的物理存储进行划分的。对于一堆记录来说,使用聚集索引就是对这堆记录 进行 堆划分。即主要描述的是物理上的存储。

举个例子:

比如图书馆新进了一批书。那么这些书需要放到图书馆内。书如何放呢?一般都有一个规则,杂志类的放到101房间,文学类的放到102房间,理工类的放到103房间等等。这些存储的规则决定了每本书应该放到哪里。而这个例子中聚集索引为书的类别。
正式因为这种存储规则,才导致 聚集索引的唯一性。

误区:

有的人认为,聚集索引的字段是唯一的。这是因为sql server 中添加主键的时候,自动给主键所在的字段生成一个聚集索引。所以人们会认为聚集索引所加的字段是唯一的。
思考一下上面这个问题。杂志类的书放到101房间。那么如果杂志类的书太多,一个101房间存放不下。那么可能101,201两个房间来存放杂志类的书籍。如果这样分析的话,那么一个杂志类对应多个房间。放到表存储的话,那么这个类别字段 就不是唯一的了。

非聚集索引:

非聚集索引,也可以从生活中找到映射。非聚集索引强调的是逻辑分类。可以说是定义了一套存储规则,而需要有一块控件来维护这个规则,这个被称之为索引表。

继续使用上述提到的例子:

同学如果想去图书馆找一本书,而不知道这本书在哪里?那么这个同学首先应该找的就是 检索室吧。对于要查找一本书来说,在检索室查是一个非常快捷的的途径了吧。但是,在检索室中你查到了该书在XX室XX书架的信息。你的查询结束了吗?没有吧。你仅仅找到了目的书的位置信息,你还要去该位置去取书。

对于这种方式来说,你需要两个步骤:
1、查询该记录所在的位置。
2、通过该位置去取要找的记录。

区别:

聚集索引:可以帮助把很大的范围,迅速减小范围。但是查找该记录,就要从这个小范围中Scan了。
非聚集索引:把一个很大的范围,转换成一个小的地图。你需要在这个小地图中找你要寻找的信息的位置。然后通过这个位置,再去找你所需要的记录。
索引与主键的区别

主键:主键是唯一的,用于快速定位一条记录。
聚集索引:聚集索引也是唯一的。(因为聚集索引的划分依据是物理存储)。而聚集索引的主要是为了快速的缩小查找范围,即记录数目未定。
主键和索引没有关系。他们的用途相近。如果聚集索引加上唯一性约束之后,他们的作用就一样了。
使用场景

基于上述的两种规则,那么在什么时候适合聚集索引,什么时候适合非聚集索引?

热心网友 时间:2022-04-30 01:58

聚集索引:也称 Clustered Index。是指关系表记录的物理顺序与索引的逻辑顺序相同。由于一张表只能按照一种物理顺序存放,一张表最多也只能存在一个聚集索引。与非聚集索引相比,聚集索引有着更快的检索速度。
MySQL 里只有 INNODB 表支持聚集索引,INNODB 表数据本身就是聚集索引,也就是常说 IOT,索引组织表。非叶子节点按照主键顺序存放,叶子节点存放主键以及对应的行记录。所以对 INNODB 表进行全表顺序扫描会非常快。
非聚集索引:也叫 Secondary Index。指的是非叶子节点按照索引的键值顺序存放,叶子节点存放索引键值以及对应的主键键值。MySQL 里除了 INNODB 表主键外,其他的都是二级索引。MYISAM,memory 等引擎的表索引都是非聚集索引。简单点说,就是索引与行数据分开存储。一张表可以有多个二级索引。
关键词:爱可生、开源数据库、数据监测、数据库运维
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? SQL SERVER数据库里的唯一索引UNIQUE和聚集索引、非聚集索引有什么区别... SQL Server 聚集索引和非聚集索引的区别分 SQL SERVER数据库 唯一索引 非唯一索引 聚集索引 非聚集索引 之间区别... 睡觉的时候,怎么才能让蚊香在哪里熄灭就到哪里熄灭? 奶粉桶自制蚊香支架为什么会自动熄灭? 点燃的蚊香放在一张纸上,不仅可以做蚊香支架,还可以接蚊香灰 解决家家户户的烦恼,肥皂上扣一个啤酒瓶盖有哪些妙用? 怎样自制蚊香支架 爱奇艺中打不了弹幕了,怎么办? 看爱奇艺直播看不到弹幕我也发不了字怎么回事 爱奇艺直播显示有安全风险怎么办,看不了弹幕。。跪谢大神 今天爱奇艺怎么不能用弹幕了? 爱奇艺突然看不到弹幕了? 好看的猫咪头像。 浦发银行信用卡取现最迟什么时候还 浦发银行云取现转入他行借记卡 浦发银行云取现只还利息可以吗 浦发信用卡云取现账户输入错误 浦发银行云取现多久到账 总是跟老公和家人吵架怎么办?不知道怎么沟通。。。 聚集索引和非聚集索引,唯一索引和非唯索引的区别 SQL 中的聚集索引和非聚集索引 分别指的是什么? 聚集索引和非聚集索引是什么意思 sql数据库聚集索引和非聚集索引的区别是什么? sqlserver in 查找在聚集索引和非聚集索引上面的区别 什么是聚集索引,什么是非聚集索引? SQL索引,聚集索引和非聚集索引的区别 什么是聚集索引和非聚集索引 数据库的聚集索引与非聚集索引 关于数据库中聚集索引和非聚集索引的区别 求教:请问聚集索引和非聚集索引,各自的区别,最好能详细点, ...创建聚集索引和非聚集索引,求创建这两种索引的SQL语句。谢谢_百度知 ... 什么是sql 聚集索引和非聚集索引 聚集索引是否一定是唯一索引 制作蛋糕用什么面粉最好呢? 制作清蛋糕用什么面粉最好? 做蛋糕用什么面粉,如何搅面? 空调外机不转维修要多少钱 《论革命(新编版)》深度剖析了法国大革命的原因及经过,既论述了法国... 中国近代革命历史资料100字