一、索引介绍

1、索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。

2、优缺点:

  • 使用索引可以大大加快 数据的检索速度(大大减少检索的数据量), 这也是创建索引的最主要的原因
  • 创建索引和维护索引需要耗费许多时间。
  • 索引需要使用物理文件存储,也会耗费一定空间。

3、分类:

(1)按照底层数据结构分:

  • B+Tree 索引:MySQL 里默认和最常用的索引类型。只有叶子节点存储 value,非叶子节点只有指针和 key。存储引擎 MyISAM 和 InnoDB 实现 BTree 索引都是使用 B+Tree,但 InnoDB 是聚集索引,索引结构和数据一起存放;MyISAM是非聚集索引,索引结构和数据分开存放。
  • 哈希索引:类似键值对的形式,一次即可定位。
  • RTree 索引:一般不会使用,仅支持 geometry 数据类型,优势在于范围查找,效率较低,通常使用搜索引擎如 ElasticSearch 代替。
  • 全文索引:对文本的内容进行分词,进行搜索。目前只有 CHARVARCHARTEXT 列上可以创建全文索引。一般不会使用,效率较低,通常使用搜索引擎如 ElasticSearch 代替。

二、正确使用索引的建议