mysql之索引类型

本文详细介绍了MySQL中的索引类型,包括聚集索引、非聚集索引、主键索引、唯一索引、普通索引和全文索引。分析了不同索引在数据结构、物理存储、字段特性及字段个数分类上的特点,强调了B+tree索引在大量数据查询中的优势,以及Hash索引和Full-text索引的适用场景。同时讨论了何时创建和避免创建索引,以及如何优化索引使用,以提高数据查询性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 索引简介

1,概念:

  MySQL官方对索引的定义是:索引(Index)是帮助MySQL高效获取数据的数据结构。索引最形象的比喻就是图书的目录。注意只有在大量数据中查询时索引才显得有意义。所以索引创建的好对于数据库的数据查询性能很重要。

2,优点:

  • 大大减少了服务器需要扫描的数据量。
  • 帮助服务器避免排序带来的性能开销。
  • 将随机IO变成顺序IO

3,哪些情况需要建索引

  1. 主键,默认创建主键索引
  2. 经常用作查询条件的字段
  3. 经常需要排序,分组和统计的字段
  4. 查询主与其他表关联的字段

4,哪些情况不需要建索引

  1. 表记录太少,百万级别以下的数据不需要创建索引
  2. 经常增删改的表不需要创建索引
  3. 数据重复且分布均匀的不需要创建,eg:true|false
  4. 频繁更新的字段不适合创建索引
  5. where条件用不到的字段

5,不同维度分类

  在MySQL中索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。常见的索引分类如下:

按数据结构分类:B+tree索引、Hash索引、Full-text索引。
按物理存储分类:聚集索引、非聚集索引(也叫二级索引、辅助索引)。
按字段特性分类:主键索引(PRIMARY KEY)、唯一索引(UNIQUE)、普通索引(INDEX)、全文索引(FULLTEXT)。
按字段个数分类:单列索引、联合索引(也叫复合索引、组合索引)。

二 按照结构分类

MySQL索引按数据结构分类可分为:B+tree索引、Hash索引、Full-text索引。
在这里插入图片描述

注:InnoDB实际上也支持Hash索引,但是InnoDB中Hash索引属于是自适应Hash索引,它的创建过程由存储引擎引擎自动优化创建,不能人为干预是否为表创建Hash索引

1,B+tree索引

  B+tree 索引是MySQL中被存储引擎采用最多的索引类型。它适用于全键值、键值范围和最左前缀查找。使用联合索引时,如果不是按照索引列的顺序进行查找,则无法使用索引。除了适用于查找,还可以用于排序和分组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值