Mysql 索引学习笔记之分类

1 索引概述

2 索引分类

2.1 按结构

  1. BTREE 索引 : 最常见的索引类型,大部分索引都支持 B 树索引。
  2. HASH 索引:只有Memory引擎支持 , 使用场景简单 。
  3. R-tree 索引(空间索引):空间索引是MyISAM引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少,不做特别介绍。
  4. Full-text (全文索引) :全文索引也是MyISAM的一个特殊索引类型,主要用于全文索引,InnoDB从Mysql5.6版本开始支持全文索引。

注: 我们平常所说的索引,如果没有特别指明,都是指B+树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚集索引、复合索引、前缀索引、唯一索引默认都是使用 B+tree 索引,统称为 索引

MyISAM、InnoDB、Memory三种存储引擎对各种索引类型的支持

索引InnoDB引擎MyISAM引擎Memory引擎
BTREE索引支持支持支持
HASH 索引不支持不支持支持
R-tree 索引不支持支持不支持
Full-text5.6版本之后支持支持不支持

2.2 从物理存储角度

  1. 聚集(聚簇)索引(clustered index)
    1. 官方描述:The InnoDB term for a primary key index 。
      1. 翻译就是 InnoDB对主键索引的称呼 或者 主键索引的InnoDB术语
    2. 该索引中键值的逻辑顺序决定了表中相应行的物理顺序
    3. 聚集索引,叶子结点即存储了真实的数据行。所以通过聚集索引可以直接获取到数据库中的数据
    4. 一般在创建表的时候就会默认将主键设置为聚集索引
    5. 没有主键会自动创建一个的隐藏字段作为聚簇索引
  2. 非聚集索引(non-clustered index)
    1. 也就是二级索引
    2. 可以创建,也可以不创建
    3. 普通索引和单列索引都是二级索引

2.3 从逻辑角度

  1. 主键索引 : 就是通过主键创建的索引,
  2. 普通索引或者单列索引: 即一个索引只包含单个列,一个表可以有多个单列索引
  3. 多列索引 (复合索引): 复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合
  4. 唯一索引:就是字段内部数据唯一
  5. 空间索引
    1. 空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON
    2. MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建
  6. 前缀索引:
    1. 就是对文本的前几个字符(具体是几个字符在建立索引时指定)建立索引
    2. 网友 深蓝 对前缀索引的介绍

2.4 聚簇和非聚簇的区别

2.4.1 结构差异

  1. 聚簇:将数据和索引放在一起,按照一定的顺序排序,数据物理存放顺序和索引顺序时一直的,所以可以说找到索引就找到数据
  2. 非聚簇索引:索引和数据不再一起,存储的是数据地址,需要做两部查询,先找到索引获取数据地址,再去查数据

2.4.2 聚簇优缺点

优势:

  1. 聚簇查询快,可以直接获取数据
  2. 聚簇效率高,按照数据的大小排列的
  3. 适合用于排序场合
    劣势:
  4. 维护成本高
  5. 如果使用非自增数据作为索引,查询效果就会大幅度下降
  6. 字段字节大会导致整体索引小号更大

3 索引语法

Mysql 索引学习笔记之语法

4 索引设计原则

索引设计原则

5 索引的使用

Mysql索引学习笔记之使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值