索引介绍:
定义:索引就相当于是数据库的“目录”
它的核心作用就一个:帮数据库快速找到数据,避免全表扫描
有索引:就像书前面有目录,直接看目录就能快速定位到某一页
没有索引:就像一本没有目录的书,想找一个词需要全部翻看一遍
数据结构/存储结构:
InnoDB用的索引结构是 B+树
B+树可以理解为 “多叉树(很多个分叉)”
二叉树是 “最多两个分叉”
哈希是一本“翻不了页”的词典,它能让你瞬间找到“精确的那一个词”
优点:
数据量大时,对于查询速度有明显的提升
缺点:
会占用一定的存储空间;
会影响写入速度(增、删、改)
注意:
索引不是越多越好:如果表经常增删改,索引建太多,写入会慢得明显
索引语法:
# 创建普通索引 create index 索引名称 on 表名(列名); # 创建唯一索引 create unique index 索引名称 on 表名(列名); # 添加主键索引 alter table 表名 add primary key (列名); # 复合索引 create index 索引名称 on 表名(列名1,列名2);查看及删除:
# 查看表上所有已创建的索引信息 show index from 表名; # 删除索引 drop index 索引名称 on 表名; # 查看实际执行时用了哪个索引或某条查询是否会走索引 -- 查所有列 EXPLAIN SELECT * FROM 表名 WHERE 列名 = '条件'; -- 查特定列 EXPLAIN SELECT id, username FROM 表名 WHERE 列名 = '条件';常见的6种检索类型:
原创
MySQL索引
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法