MYSQL8数据库索引
MYSQL索引简介
索引的最大作用
是提高查询效率
。
索引的原理
索引相关算法
Hsh算法
二叉树
平衡二叉树
BTREE树
MyISAM引擎使用B+Tree
InnoDB引擎使用B+Tree
MYSQL索引的分类
哈希索引
:哈希索引适用于全值匹配的等值查询,但不支持范围查询和排序操作。哈希索引通常对大型数据集进行快速数据查找使用,例如内存缓存等。全局索引
:全局索引是指跨多个分区的索引。它可以提高查询效率,但需要更多的磁盘空间和计算资源。
单列索引
:普通索引(B-Tree索引)
:MySQL 8中,普通索引
(也称为B树索引
)是最常用的一种索引类型。它是基于B树数据结构实现的,能够快速定位到符合条件的记录。B-Tree
索引是MySQL最常用的索引类型。它适用于等值查询、范围查询和排序操作。B-Tree
索引通常对主键
或唯一约束
列创建。唯一索引
:唯一索引是一种特殊的B-Tree索引,用于确保列中的值是唯一的。它与表的唯一约束关联,并在查询中用作唯一性约束。主键索引
:主键索引是一种特殊的B-Tree索引,它是唯一的,并且不能为NULL。它与表的主键关联,并在查询中用作主键约束。
组合索引
: 指的是在建立索引的时候使用多个字段
。全文本索引
:全文本索引用于处理自然语言文本的搜索,而不是对表中的数值进行搜索。全文本索引在执行全文本搜索时,可以使用分词器来拆分文本并生成索引。MySQL 8支持全文本索引。空间索引
:空间索引适用于地理空间和几何对象的存储和查询。它可以加速空间数据的查询,如半径查询、边界框查询等。
Hash索引–重点
单列索引
普通索引
https://blog.youkuaiyun.com/omaidb/article/details/130204123
主键索引
创建带有主键约束的表
时,MYSQL会自动
在主键列上建立一个索引
,这就是主键索引
。主键具有唯一且不允许为NULL
的特点。所以他是一种特殊的唯一约束
。
唯一索引
https://blog.youkuaiyun.com/omaidb/article/details/130204650
空间索引
https://blog.youkuaiyun.com/omaidb/article/details/130204494
全文索引
https://blog.youkuaiyun.com/omaidb/article/details/130204562
组合索引
组合索引
也叫复合索引
,指的是在建立索引的时候使用多个字段
;
例如:
- 同时使用
身份证
和手机号
建立索引,同样的可以建议为普通索引
或唯一索引
复合索引
的使用要符合最左原则
创建索引-组合索引
-- 创建组合索引的基本语法
CREATE index 索引名 on student(列1,列2);
-- 示例
CREATE index index_phone_name on student(phone_num,name);
查看创建的组合索引
索引的操作
创建索引的原则
查看索引
使用mysql图形化工具查看
查看数据库所有索引
-- 查看数据库中所有索引
SELECT * FROM mysql.`innodb_index_stats` AS a WHERE a.`database_name`='库名';
查看表中所有索引
-- 查看表中所有索引
SHOW index FROM 表名;
隐藏索引
https://www.qycn.com/xzx/article/582.html
-- 隐藏一个索引的语法
ALTER TABLE t ALTER INDEX i INVISIBLE;
-- 恢复显示该索引的语法是:
ALTER TABLE t ALTER INDEX i VISIBLE;
删除索引
-- 删除索引
-- drop删除索引
DROP IF EXISTS 索引名 on 表名;
-- ALTER删除索引
ALTER TABLE 表名 DROP index 索引名;