MYSQL8数据库索引

MYSQL8数据库索引

  • MYSQL索引简介
    • 索引的原理
    • 索引相关算法
      • Hsh算法
      • 二叉树
      • 平衡二叉树
      • BTREE树
        • MyISAM引擎使用B+Tree
        • InnoDB引擎使用B+Tree
  • MYSQL索引的分类
    • Hash索引--重点
    • 单列索引
      • 普通索引
      • 主键索引
      • 唯一索引
    • 空间索引
    • 全文索引
    • 组合索引
      • 创建索引-组合索引
      • 查看创建的组合索引
  • 索引的操作
  • 创建索引的原则
  • 查看索引
    • 查看数据库所有索引
    • 查看表中所有索引
  • 删除索引

MYSQL索引简介

索引的最大作用提高查询效率


索引的原理


索引相关算法


Hsh算法


二叉树

MYSQL8数据库索引_第1张图片


平衡二叉树

MYSQL8数据库索引_第2张图片


BTREE树


MyISAM引擎使用B+Tree


InnoDB引擎使用B+Tree


MYSQL索引的分类

  1. 哈希索引:哈希索引适用于全值匹配的等值查询,但不支持范围查询和排序操作。哈希索引通常对大型数据集进行快速数据查找使用,例如内存缓存等。
  2. 全局索引:全局索引是指跨多个分区的索引。它可以提高查询效率,但需要更多的磁盘空间和计算资源。

MYSQL8数据库索引_第3张图片

  • 单列索引:
    • 普通索引(B-Tree索引):MySQL 8中,普通索引(也称为B树索引)是最常用的一种索引类型。它是基于B树数据结构实现的,能够快速定位到符合条件的记录。B-Tree索引是MySQL最常用的索引类型。它适用于等值查询、范围查询和排序操作。B-Tree索引通常对主键唯一约束列创建。
    • 唯一索引:唯一索引是一种特殊的B-Tree索引,用于确保列中的值是唯一的。它与表的唯一约束关联,并在查询中用作唯一性约束。
    • 主键索引:主键索引是一种特殊的B-Tree索引,它是唯一的,并且不能为NULL。它与表的主键关联,并在查询中用作主键约束。
  • 组合索引: 指的是在建立索引的时候使用多个字段
  • 全文本索引:全文本索引用于处理自然语言文本的搜索,而不是对表中的数值进行搜索。全文本索引在执行全文本搜索时,可以使用分词器来拆分文本并生成索引。MySQL 8支持全文本索引。
  • 空间索引:空间索引适用于地理空间和几何对象的存储和查询。它可以加速空间数据的查询,如半径查询、边界框查询等。

Hash索引–重点

MYSQL8数据库索引_第4张图片
MYSQL8数据库索引_第5张图片


单列索引


普通索引

https://blog.csdn.net/omaidb/article/details/130204123


主键索引

创建带有主键约束的表时,MYSQL会自动主键列上建立一个索引,这就是主键索引。主键具有唯一且不允许为NULL的特点。所以他是一种特殊的唯一约束
MYSQL8数据库索引_第6张图片


唯一索引

https://blog.csdn.net/omaidb/article/details/130204650


空间索引

https://blog.csdn.net/omaidb/article/details/130204494


全文索引

https://blog.csdn.net/omaidb/article/details/130204562


组合索引

组合索引也叫复合索引,指的是在建立索引的时候使用多个字段
例如:

  • 同时使用身份证手机号建立索引,同样的可以建议为普通索引唯一索引
  • 复合索引的使用要符合最左原则

创建索引-组合索引

-- 创建组合索引的基本语法
CREATE index 索引名 on student(1,2);

-- 示例
CREATE index index_phone_name on student(phone_num,name);

查看创建的组合索引

MYSQL8数据库索引_第7张图片


索引的操作

MYSQL8数据库索引_第8张图片


创建索引的原则

MYSQL8数据库索引_第9张图片


查看索引

使用mysql图形化工具查看
MYSQL8数据库索引_第10张图片


查看数据库所有索引

-- 查看数据库中所有索引
SELECT * FROM mysql.`innodb_index_stats` AS a WHERE a.`database_name`='库名';


查看表中所有索引

-- 查看表中所有索引
SHOW index FROM 表名;

MYSQL8数据库索引_第11张图片


删除索引

MYSQL8数据库索引_第12张图片

-- 删除索引
-- drop删除索引
DROP IF EXISTS 索引名 on 表名;

-- ALTER删除索引
ALTER TABLE 表名 DROP index 索引名;

你可能感兴趣的:(数据库,数据库,前端,mysql)