聚集索引也称聚簇索引,英文为clustered index。从物理存储角度来分, 索引可以分为聚集索引和辅助索引(secondary index,也称作非聚簇索引),区别主要看叶子节点存了什么数据,即聚集索引的叶子节点存放所有数据,而非聚集索引仍然是索引节点,只不过有一个指针指向对应的数据块。

   索引和数据放在一个数据结构中,innodb的主键索引就是一个聚簇索引,一个表只有一个聚簇索引,是一种B+tree的树状结构,非叶子节点之存储索引值和子节点地址,叶子节点存储数据。

   聚集索引与辅助索引相同点和区别:

   相同点:数据结构都是B+树,即高度是平衡的,叶子结点存放着所有的数据。

   不同点:聚集索引叶子结点存放的是一整行的信息,辅助索引的叶子节点不包含行记录的全部数据。

   聚簇索引的叶子节点存放的是数据节点,而辅助索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。

   主键一定是聚簇索引,如果开发人员不手动设置 主键,那么MySQL会默认使用非空的 Unique 索引,若没有非空的 Unique 索引,则会使用数据库内部的一个行的 id 来当作主键索引,其它普通索引需要区分SQL 场景,当 SQL 查询的列就是索引本身时,我们称这种场景下该普通索引也可以叫做聚簇索引,MyisAM 引擎没有聚簇索引。

   一张表只允许存在一个聚簇索引 , 因为数据一旦存储,顺序只能有一种。但是,一个表可以有多个非聚簇索引 。

   辅助索引的存在并不影响数据在聚集索引中的组织,因此每张表上可以有多个辅助索引,但只能有一个聚集索引。当通过辅助索引来寻找数据时, InnoDB存储引擎会遍历辅助索引并通过叶子级别的指针获得指向主键索引的主键,然后再通过主键索引来找到一个完整的行记录。

MySQL聚集索引与辅助索引的区别的更多相关文章

  1. MySQL中的聚集索引和辅助索引

    MySQL中的聚集索引和辅助索引 当你定义一个主键时,innodb存储引擎就把他当做聚集索引 如果你没有定义一个主键,则innodb定位到第一个唯一索引,且改索引的所有列值均为非空,就将其当做聚集索引 ...

  2. MySql数据库索引-聚集索引和辅助索引

    InnoDB存储引擎索引: B+树索引:不能找到一个给定键值的具体行,能找到的只是被查找数据行所在的页.然后把页加载到内存,在查询所要的数据. 全文索引: 哈希索引:InnoDB会根据表的使用情况自动 ...

  3. Are You OK?主键、聚集索引、辅助索引

    每张表都一定存在主键吗? 关于这个问题,各位小伙伴们不妨先自己想一想,再往下寻找答案. 首先公布结论:对于 InnoDB 存储引擎来说,每张表都一定有个主键(Primary Key)! 让人非常遗憾的 ...

  4. mysql 聚集索引,非聚集索引,覆盖索引区别。

    把原站信息经过筛选贴过来,用于自己备忘.原站:https://www.cnblogs.com/aspwebchh/p/6652855.html ---------------------------- ...

  5. mysql 聚集索引和非聚集索引问题(整理)

    mysql的聚集索引和非聚集索引 前几天做了一个面试,从优化数据库谈到索引,最后问了我聚集索引和非聚集索引的问题.当时那个叫悔恨啊,平时学习mysql索引这方便的知识,也都看到了这样的字眼,,但总的来 ...

  6. MySQL聚集索引和非聚集索引

    索引分为聚集索引和非聚集索引,mysql中不同的存储引擎对索引的底层实现可能会不同,这里只关注mysql的默认存储引擎InnoDB. 利用下面的命令可以查看默认的存储引擎 show variables ...

  7. mysql聚集索引

    转自http://www.cnblogs.com/tuyile006/archive/2009/08/28/1555615.html 微软的SQL SERVER提供了两种索引:聚集索引(cluster ...

  8. mysql聚集索引的优缺点

    聚簇索引并不是一种单独的索引类型,而是一种数据存储方式(不是数据结构,而是存储结构),具体细节依赖于其实现方式,但innodb的聚簇索引实际上是在同一个结构中保存了btree索引和数据行. 当表有索引 ...

  9. Mysql聚集索引的使用

    聚集索引 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式(不是数据结构,而是存储结构),具体细节依赖于其实现方式,聚簇索引实际上是在同一个结构中保存了btree索引和数据行. innodb将通 ...

  10. mysql 聚集索引和非聚集索引

    聚集索引:聚集索引表示表中存储的数据按照索引的顺序存储,检索效率比非聚集索引高,但对数据更新影响较大: 非聚集索引:非聚集索引表示数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位 ...

随机推荐

  1. 【ABAQUS2023-Output Vars】使用记录

    计算结构的应变能,ALLSE=所有单元的ESEDEN*EVOL.但这不适用于模态分析,因为模态分析EVOL不能用 ALLSE Field: no History: yes .fil: automati ...

  2. Selenium IDE工具:火狐浏览器实例讲解IDE命令

    在本文中,通过Firefox浏览器上的示例学习Selenium IDE: 我们将使用的网址是"https://accounts.google.com"作为测试程序,通过本文你会 了 ...

  3. fs的proxy_media模式失效

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 在fs的使用过程中,某些场景只需要对rtp媒体做透传,又不需要任何处理. 在fs1.6的版本中,我们可以使用proxy_media来 ...

  4. linux tmux 使用教程

    前言 Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具. 本文介绍如何使用 Tmux. 一.Tmux 是什么? 1.1 会话与进程 命令行的典型使用 ...

  5. breach1靶机渗透学习

    靶机下载 https://www.vulnhub.com/ 找Breach-1.0,不过这个是老靶机了,可以看网上其他博客附带有靶机下载的网盘链接,靶机官网访问很慢而且网站好像出问题了排版很乱,不打也 ...

  6. JAVA调用Python脚本执行

    SpringBoot-web环境 <dependency> <groupId>org.springframework.boot</groupId> <arti ...

  7. Tomcat之Jconsole监控

    JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具,JConsole使用Java虚拟机(Java VM),提供在Java平台上运行的应用程序的性能和资源消耗的信息.在Ja ...

  8. 密码加密|jsencrypt|md5|加密解密的两种方式

    一.md5 npm install md5 二.JSEncrypt 2.1 介绍 JSEncrypt属于RSA加密,RSA加密算法是一种非对称加密算法: 2.2 使用 安装: npm install ...

  9. 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(11)

    1.问题描述: 鸿蒙push右侧图表没有正常展示. 解决方案: .jpg格式文件,头信息必须是这个"jpg:ffd8". 2.问题描述: 安卓端App在开发者平台申请了Androi ...

  10. 英语面试-Behavioral Question - second part

    前言 希望我总结的行为面试问题和答案能够给大家帮助. 学习方法:每个问题都有三部分组成. 第一部分是语料积累,这里是根据视频中的内容总结而来: 第二部分是中文描述,这里主要根据我自己的经历结合问题做出 ...