MySQL索引

一.概述

索引在MySQL中称为键。

 

二.分类

1.数据结构上

常用的是Hash和BTree.

(1).B-tree索引

 

b-tree,使用二分法检索数据,蓝色块是数据项,黄色是指针。非叶子结点不存储真实的数据,只存储指引搜索的方向的数据项。B树的层数,是磁盘的IO次数。

特性:索引字段要尽量的小,索引最左匹配特性。

 

(2).Hash索引

Hash index,只有在精确值的索引列才有作用。对于每一行数据,存储引擎都会对Hash index列给出一个Hash码。

依赖单值查找类型的系统,我们称之为键值存储。MySQL这类应用,尽可能使用Hash index.

优化Order by的时候,不能使用Hash index,因为Hash table不好找到下一个元素.

 

2.数据类型
唯一索引、全文索引、普通索引.

(1).唯一索引:限制值是唯一的。(猜想:索引取值然后再校验值,确实是否唯一).

(2).普通索引:添加唯一的目的就是加快对数据的访问。 

(3).全文索引:全文索引建立在文本数据类型列上(char、varchar、text),

 

3.多列索引

联合唯一索引、联合普通索引、联合主键索引.

索引寻值的基本单位是多列.

 

三.相关指令

show index from table;       //显示一张表上创建的索引.

 

四.应用场景

索引多用于检索,SQL中控制检索的关键字为where、group_by、order_by,所以索引多用于这些关联的字段上。

1.b-tree索引多用于模糊,范围的检索.

2.Hash索引多用于精确检索.

 

posted @ 2018-11-08 19:15  san3er  阅读(68)  评论(0)    收藏  举报