首页 > 数据库 >MySQL进阶篇:第二章_二.三_ 索引分类

MySQL进阶篇:第二章_二.三_ 索引分类

时间:2023-10-08 11:55:17浏览次数:38  
标签:10 索引 聚集 进阶篇 查找 键值 MySQL 主键

索引分类

索引分类

在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。

分类 含义 特点 关键字
主键索引 针对于表中主键创建的索引 默认自动创建, 只能有一个 PRIMARY
唯一索引 避免同一个表中某数据列中的值重复 可以有多个 UNIQUE
常规索引 快速定位特定数据 可以有多个
全文索引 全文索引查找的是文本中的关键词,而不是比 可以有多个 FULLTEXT

聚集索引&二级索引

而在在InnoDB存储引擎中,根据索引的存储形式,又可以分为以下两种:

分类 含义 特点
聚集索引(Clustered Index) 将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据 必须有,而且只有一个
二级索引(Secondary Index) 将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键 可以存在多个

聚集索引选取规则:

  • 如果存在主键,主键索引就是聚集索引。
  • 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
  • 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引。

聚集索引和二级索引的具体结构如下:

  • 聚集索引的叶子节点下挂的是这一行的数据 。
  • 二级索引的叶子节点下挂的是该字段值对应的主键值。

接下来,我们来分析一下,当我们执行如下的SQL语句时,具体的查找过程是什么样子的。

具体过程如下:
①. 由于是根据name字段进行查询,所以先根据name='Arm'到name字段的二级索引中进行匹配查找。但是在二级索引中只能查找到 Arm 对应的主键值 10。
②. 由于查询返回的数据是*,所以此时,还需要根据主键值10,到聚集索引中查找10对应的记录,最终找到10对应的行row。
③. 最终拿到这一行的数据,直接返回即可。

回表查询: 这种先到二级索引中查找数据,找到主键值,然后再到聚集索引中根据主键值,获取数据的方式,就称之为回表查询。

标签:10,索引,聚集,进阶篇,查找,键值,MySQL,主键
From: https://www.cnblogs.com/oten/p/17748545.html

相关文章

  • Mysql join算法深入浅出
    导语联表查询在日常的数据库设计中非常的常见,但是联表查询可能会带来性能问题,为了调优、避免设计出有性能问题的SQL,在explain命令中,会显示用的是哪个join算法,学习一下join过程是非常有必要的当执行下面这个SQLJoin,在不同的情况下会产生不一样的复杂度select*fromusertb1l......
  • MySQL篇:第一章_补_MySQL卸载(Windows版)
    MySQL卸载文档-Windows版1.停止MySQL服务win+R打开运行,输入services.msc点击"确定"调出系统服务。2.卸载MySQL相关组件打开控制面板--->卸载程序--->卸载MySQL相关所有组件3.删除MySQL安装目录4.删除MySQL数据目录数据存放目录是在C:\ProgramData\MySQL......
  • 【Mysql】不要用int类型存储11位手机号
    一、遇到问题今天在做添加数据的时候,发现手机号存储错误,报错信息是:Cause:com.mysql.cj.jdbc.exceptions.MysqlDataTruncation:Datatruncation:Outofrangevalueforcolumn'f_phone'atrow1;Datatruncation:Outofrangevalueforcolumn'f_phone'atrow1;ne......
  • ubuntu下mysql有表却提示table doesn't exist
    linux里面的mysql是区分大小写的,windows下的mysql不区分。在mysql的安装目录里面找到mysqld.cnf文件,在[mysqld]的下面(可以看到还有别的配置信息)添加  lower_case_table_names=1  就行了。我的这个配置文件的目录是/etc/mysql/mysql.conf.d文件夹下。......
  • 总结mysql常见的存储引擎以及特点
    常见的mysql存储引擎有MyISAM和InnoDB。myISAM引擎特点:1.不支持事务2.表级锁定3.读写相互堵塞,写入不能读,读时不能写4.只缓存索引5.不支持外键约束6.不支持聚簇索引7.读数据较快,占用资源较少8.不支持MVCC(多版本并发控制)高并发9.崩溃恢复性较差10.MySQL5.5.5前默认数据......
  • MySQL日志各类总结
    Mysql的日志分类: 事务日志:transactionlog 错误日志:errorlog 通用日志:generallog 慢查询日志:showquerylog 二进制日志:binarylog 中继日志releylog1)事务日志的写入类型为"追加",因此其操作为“顺序IO”;通常也被称为:预写式日志writeaheadlogging事务日志文件:ib......
  • Mysql 分布式序列算法
    接上文Mysql分库分表1.分布式序列简介在分布式系统下,怎么保证ID的生成满足以上需求?ShardingJDBC支持以上两种算法自动生成ID。这里,使用ShardingJDBC让主键ID以雪花算法进行生成,首先配置数据库,因为默认的注解id是int类型,装不下64位,需要进行修改:#在本地和远端服务器数据......
  • Mysql实现EF Core CodeFirst实现
    一、引用包Microsoft.EntityFrameworkCore.ToolsPomelo.EntityFrameworkCore.MySql二、常用命令1、Add-Migration(版本号)创建新的CodeFirst文件2、Update-Database更新数据库三、代码实现///<summary>///系统用户///</summary>[Table("SysU......
  • 倒排索引
    https://blog.csdn.net/qq_43403025/article/details/114779166单词ID(WordID)单词(Word)倒排列表(DocID)1乔布斯1,3,4,52苹果2,3,53iPad23,44宣布35了1,4,5......
  • Linux - 安装MySQL
    下载地址:https://downloads.mysql.com/archives/community/安装步骤:mkdirmysqltar-xvfmysql-8.0.26-1.el7.x86_64.rpm-bundle.tar-Cmysqlrpm-ivhmysql-community-common-8.0.26-1.el7.x86_64.rpmrpm-ivhmysql-community-client-plugins-8.0.26-1.el7.x86_64.rp......