MySQL基础-索引

108 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第11天,点击查看活动详情

索引

MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构。0.5s 0.00001s 提取句子主干,就可以得到索引的本质,索引是数据结构

索引的分类

在一个表中,主键索引只能有一个,唯一索引可以有多个

  • 主键索引(primary key) 唯一的标识,主键不可重复,只有有一个列作为主键primary key(列名)
  • 唯一索引(uniqe key) 避免重复的列出现,唯一索引可以重复,多个列都可以标识位 唯一索引unique key 索引名(列名)
  • 常规索引(key/index) 默认的,index,key关键字来设置key 索引名(列名)
  • 全文索引(fulltext) 在特定的数据库引擎下才有,mylsam有,快速定位 ALTER TABLE 数据库.表名 ADD FULLTEXT INDEX 索引名(列名)
  • EXPLAIN分析sql执行的状况 EXPLAIN SELECT * FROM 表名;---非全文索引 SELECT *FROM 表名 WHERE MATCH(索引名)AGAINST(需要匹配的值)

测试索引

SELECT *FROM 表名 WHERE 列名

QQ截图20220425205416.png

-查找大量数据时速度慢

  • id_表名_字段名 CREATE INDEX 索引名字 ON 表(字段)速度大幅度增加

QQ截图20220425205214.png

  • 索引在小数据的时候,用处不大,但是在大数据的时候,区别十分明显

索引原则

  • 索引不是越多越好
  • 不要对进程变动数据加索引
  • 小数据量的表不需要索引
  • 索引一般加在常用来查询的字段上

索引原理

Mysql的索引用的是B+树,他具有这样的几个特点:

1、数据都存储在叶子节点中、非叶子节点只存储索引

2、叶子节点中包含所有的索引

3、每个小节点的范围都在大节点之间

4、叶子节点用指针相连,提高访问性能,比如条件是>或者<的查询就可以直接按指针找(Mysql中的B+树叶子节点中的指针是双向指针)