mysql索引总结(1)-mysql 索引类型以及创建

mysql索引总结(2)-MySQL聚簇索引和非聚簇索引

mysql索引总结(3)-MySQL聚簇索引和非聚簇索引

mysql索引总结(4)-MySQL索引失效的几种情况

聚簇索引就是对磁盘上的实际数据重新组织以按照特定的一个或者多个列的值排序的算法

特点是存储数据的顺序和索引顺序一致 一般情况下主键会默认生成聚簇索引 且一张表有且只有一个聚簇索引

聚簇索引和非聚簇索引的区别是:

聚簇索引(innobe)的叶子节点就是数据节点 而非聚簇索引(myisam)的叶子节点仍然是索引文件 只是这个索引文件中包含指向对应数据块的指针

MySQL中不同的数据存储引擎对聚簇索引有不同的支持

MyISAM使用的是非聚簇索引

原始数据

存储方式

按照列值和行号来组织索引的 叶子节点中保存的实际上是指向存放数据块的指针

从物理文件中也可以看出 MyISAM的索引文件.MYI和数据文件.MYD是分开存储的 是相对独立的

对于InnoDB引擎来说,是按照聚簇索引的形式存储数据

它的每个聚簇索引的叶子节点都包含主键值、事务ID、回滚指针(用于事务和MVCC)以及余下的列。

从物理文件也可以看出 InnoDB的数据文件只有数据结构文件.frm和数据文件.idb 其中.idb中存放的是数据和索引信息 是存放在一起的

InnoDB的二级索引和主键索引也有很大的不同 二级索引存放的是主键值而不是行指针 减少了移动数据或者分裂时维护二级索引的开销,因为不需要更新索引的行指针

MyISAM和InnoDB的二级索引的对比

从图中可以看出 InnoDB二级索引的叶子节点存放的是KEY字段+主键值,因此首先通过二级索引查找到的是主键值,再根据主键值在朱建索引中查找到相应的数据文件。

而MyISAM的二级索引存放的还是列值和行号的组合 叶子节点中保存的是指向物理数据的指针,因此它的主建索引和二级索引的结构并没有任何区别,只是说主键索引的索引值是唯一且非空的,而MyISAM引擎可以不设置主键。

InnoDB引擎是必须设置主键的,需要依赖主键生成聚簇索引,因此当没有指定主键的时候,InnoDB引擎会默认寻找一个可以唯一标识每行数据的列作为主键,当这种列不存在的时候,会默认生成一个6字节整型的隐藏列作为主键

mysql索引总结(2)-MySQL聚簇索引和非聚簇索引的更多相关文章

  1. mysql索引总结(3)-MySQL聚簇索引和非聚簇索引

    mysql索引总结(1)-mysql 索引类型以及创建 mysql索引总结(2)-MySQL聚簇索引和非聚簇索引 mysql索引总结(3)-MySQL聚簇索引和非聚簇索引 mysql索引总结(4)-M ...

  2. mysql索引之聚簇索引与非聚簇索引

    1 数据结构及算法基础 1.1 索引的本质 官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构 本质:索引是数据结构 查询是数据库的最主要功能之一.我们都希望查询速度能尽可能快,因此数 ...

  3. MYSQL性能调优: 对聚簇索引和非聚簇索引的认识

    聚簇索引是对磁盘上实际数据重新组织以按指定的一个或多个列的值排序的算法.特点是存储数据的顺序和索引顺序一致.一般情况下主键会默认创建聚簇索引,且一张表只允许存在一个聚簇索引. 在<数据库原理&g ...

  4. MySQL 聚簇索引和非聚簇索引的认识

    聚簇索引是对磁盘上实际数据重新组织以按指定的一个或多个列的值排序的算法.特点是存储数据的顺序和索引顺序一致.一般情况下主键会默认创建聚簇索引,且一张表只允许存在一个聚簇索引. 在<数据库原理&g ...

  5. mysql 聚簇索引、非聚簇索引的区别

    索引分为聚簇索引和非聚簇索引. 以一本英文课本为例,要找第8课,直接翻书,若先翻到第5课,则往后翻,再翻到第10课,则又往前翻.这本书本身就是一个索引,即"聚簇索引". 如果要找& ...

  6. 【Mysql优化】聚簇索引与非聚簇索引概念

    必须为主键字段创建一个索引,这个索引就是所谓的"主索引".主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE.  首先明白两句话: innod ...

  7. MySQL中Innodb的聚簇索引和非聚簇索引

    聚簇索引 数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引(又叫二级索引)两种.Innodb的聚簇索引在同一个B-Tree中保存了索引列和具体的数据,在聚簇索引中,实际的数据保存在叶子页中, ...

  8. 一分钟明白MySQL聚簇索引和非聚簇索引

    MySQL的InnoDB索引数据结构是B+树,主键索引叶子节点的值存储的就是MySQL的数据行,普通索引的叶子节点的值存储的是主键值,这是了解聚簇索引和非聚簇索引的前提 什么是聚簇索引? 很简单记住一 ...

  9. MySQL聚簇索引和非聚簇索引的对比

    首先要清楚:聚簇索引并不是一种单独的索引类型,而是一种存储数据的方式. 聚簇索引在实际中用的很多,Innodb就是聚簇索引,Myisam 是非聚簇索引. 在之前我想插入一段关于innodb和myisa ...

随机推荐

  1. [FAILED]Marking disk "DATA02" as an ASM disk

    执行删除asm磁盘时报错! [root@rac1 grid]# /etc/init.d/oracleasm deletedisk DATA01 /dev/sdc1 Marking disk " ...

  2. My first paper is now available online

    A two-grid discretization scheme of non-conforming finite elements for transmission eigenvalues

  3. PB常用函数

    弹出窗口:messagebox() 基本写法:Messagebox('标题','内容') 完整写法: MessageBox ( '标题','内容',图标,按键,默认值) (1)其中标题与内容为要显示的 ...

  4. cxgrid显示海量数据

    cxgrid显示海量数据 在默认情况下,cxgrid显示几万条以上的数据会很慢.怎么办? 交下面的属性设为TRUE以后,速度飞快. 但速度是快了,自动计算列的合计值这些功能却失效了,正所谓有得必有失!

  5. 如何获取 docker 容器(container)的 ip 地址

    1. 进入容器内部后 cat /etc/hosts 会显示自己以及(– link)软连接的容器IP 2.使用命令 docker inspect --format '{{ .NetworkSetting ...

  6. Spring Security Hello World Example--reference

    In this tutorial, we will see how we can use Spring security to protect specific resources. This Hel ...

  7. IE兼容性小结(IE7及以上版本)

    缘由 在急速的互联网时代,原本ie系列的低版本浏览器就该淘汰了.可偏偏还是有很多xp系统ie7.8浏览器,这有让网站甚是苦逼.练就了一套新技术,原本以为能大展身手,可却在ie阵容中认怂了,不得不规规矩 ...

  8. JS学习笔记1_基础与常识

    1.六种数据类型 5种基础的:Undefined,Null,Boolean,Number,String(其中Undefined派生自Null) 1种复杂的:Object(本质是一组无序键值对) 2.字 ...

  9. WPF设计时

    资料太少.中文没有.英文的也残缺不全.待补充.问题暂时解决. 设计器通过使用命名约定来发现自定义设计时程序集 运行时程序集与设计时程序集对应关系 加载顺序 程序集名称(*表示版本号,可省略)    0 ...

  10. 【计算机网络】 网络体系结构分类: 客户机/服务器体系和P2P

    网络体系结构的分类 现代网络应用程序有两种主流的体系结构: 客户机/服务器体系结构和P2P体系结构(peer to peer “对等”)   一 . 客户机/服务器体系结构     客户机/服务器体系 ...