MySQL索引深入剖析-索引介绍

索引是什么?

索引是什么

索引图解

维基百科对数据库索引的定义:

数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询、更新数据库表中数据。

怎么理解这个定义呢?
在这里插入图片描述
​ 首先数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果没有索引的话,要从 500 万行数据里面检索一条数据,只能依次遍历这张表的全部数据,直到找到这条数据。

​ 但是有了索引之后,只需要在索引里面去检索这条数据就行了,因为它是一种特殊的专门用来快速检索的数据结构,我们找到数据存放的磁盘地址以后,就可以拿到数据了。

​ 就像我们从一本 500 页的书里面去找特定的一小节的内容,肯定不可能从第一页开始翻。那么这本书有专门的目录,它可能只有几页的内容,它是按页码来组织的,可以根据拼音或者偏旁部首来查找,只要确定内容对应的页码,就能很快地找到我们想要的内容 。

索引类型

怎么创建一个索引?

在这里插入图片描述
第一个是索引的名称,第二个是索引的列,比如我们是要对 id 创建索引还是对 name创建索引。后面两个很重要,一个叫索引类型

在 InnoDB 里面,索引类型有三种,普通索引、唯一索引(主键索引是特殊的唯一索引)、全文索引。

普通(Normal):也叫非唯一索引,是最普通的索引,没有任何的限制。

唯一(Unique):唯一索引要求键值不能重复。另外需要注意的是,主键索引是一种特殊的唯一索引,它还多了一个限制条件,要求键值不能为空。主键索引用 primay key创建。

全文(Fulltext):针对比较大的数据,比如我们存放的是消息内容,有几 KB 的数据的这种情况,如果要解决 like 查询效率低的问题,可以创建全文索引。只有文本类型的字段才可以创建全文索引,比如 char、varchar、text

create table m3 (
name varchar(50),
fulltext index(name)
);

全文索引的使用:

select * from fulltext_test where match(content) against('张三' IN NATURAL LANGUAGE MODE);

MyISAM 和 InnoDB 支持全文索引 .

这个是索引的三种类型:普通、唯一、全文。

索引是一种数据结构,那么它到底应该选择一种什么数据结构,才能实现数据的高效检索呢,未完待续…

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/niugang0920/article/details/114257147