MySQL之初识索引

124 阅读2分钟

这是我参与8月更文挑战的第15天,活动详情查看: 8月更文挑战

MySQL是目前最流行的关系型数据库了,今天我们就不学习MySQL的基本使用了,直接上索引学习。

什么是索引?

在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

索引的作用相当于图书中的目录,可以根据目录中的页码,以供快速找到相关内容。

MySQL中有哪些索引?

从数据结构角度

从数据结构角度来说,可以分为BTree、HASH、FULLTEXT、R-Tree四大类。

从物理存储角度

从物理存储角度来分类的话,可以分为聚集索引、非聚集索引。

从逻辑角度

从逻辑角度,也是我们日常中最常见到的角度,分别分为下面几类:

1.普通索引,可供加速查询。

2.唯一索引,加速查询 + 列值唯一性(可以有null值)。

3.主键索引,加速查询 + 列值唯一性(不可以有null),因为是主键索引,当然是涉及主键列,所以主键索引只会在一张表里存在一个。

4.组合索引,这个稍微特殊点,是由多列值组成一个索引,专门用于组合搜索,效率也大于索引合并。

5.全文索引,对文本的内容进行分词,进行快速搜索。

索引基本使用

创建普通索引,如下SQL:

create index suoyin_test on tablename (table_column_name);

创建唯一索引和普通索引也差不多,只不过是在index前面指定一个unique。

create unique index suoyin_test on tablename (table_column_name);

如何查询索引信息,如下SQL:

show index from tableName;

注意:不是所有情况都能去使用索引,在数据量没有到达一定量级的情况下,用索引反而会变慢,所以索引还是要慎用。