MySQL干货汇总

02-MySQL索引

2018-11-04  本文已影响0人  嗷大喵儿

1.索引的作用

1.1数据完整性

MySQL使用主键和唯一键来执行每个表中存储数据的唯一性等级

主键

每个表中只能有1个主键,
不能包含NULL值
通过主键可以获取表中任意特定行
如果定了一AUTO INCREMENT列,那么此列必须是主键的一部分

唯一键

表可以有多个唯一键
唯一键可以包含NULL值,且每个NULL值都是唯一的(即NULL!=NULL)

外键:外键不是索引,是约束。然而通常大部分外间约束的先决条件就是外键所在的表和外键参照的表都必须有索引,这样才能管理外键约束。目前InnoDB支持外键约束且不要求存在对应的索引

1.2优化数据访问

索引可以让优化器在执行查询的时候不必检索表中所有的数据。通过限制需要访问的行的树木,可以显著提高查询速度。

1.3表连接

索引除在给定表上限制需要读取的数据外,索引另一个作用就是快捷高效地在相关表之间做连接操作。

1.4结果排序

优化 order by

1.5聚合操作

索引还可以作为一种更方便的计算聚合结果的工具

2.关于存储引擎

2.1存储引擎作用

2.2存储引擎

3.索引专业术语

索引术语.png

4.MySQL索引类型

MySQL支持在所有的关系型数据库表中创建主键,唯一键,不唯一的非主码索引等多种类型的索引。此外,在一些特定的存储引擎中MySQL还支持纯文本和空间索引类型

4.1索引数据结构理论

4.2MySQL实现

MyISAM

基于B-树来实现主码索引,唯一索引和非主码索引。

InnoDB

基于B+ 实现主码索引(聚簇主码),这种结构把所有的数据和对应的主码组织在一起,并且在叶子节点这一层添加额外的向前和向后指针,这样更方便进行范围扫描操作
基于B-树的非主码,非主码索引存储的是主码的实际值。
使用散列进行更高效的主码查找

Memory

基于散列也可以基于B-树构建索引

4.3MySQL分区

5.创建索引

5.1单列索引

即在一列上创建索引

5.2 多列索引

即在两列/多列上创建索引,称作混合索引/连接索引

*ALTER TABLE <tableName> ADD PRIMARY KEY [index-name] (<column1>,<column2>...);

5.3 添加索引造成的影响

上一篇 下一篇

猜你喜欢

热点阅读