聚簇索引、全文索引与哈希索引
(1)、聚簇索引
聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。
术语“聚簇”表示数据行和相邻的键值进错的存储在一起。
如图所示,在左侧位置上存放着聚簇索引项;这是因为数据行按照特定的方式存储于磁盘上,并与对应的索引进行同步排序操作。

聚簇索引的好处:
基于聚簇索引组织的查询顺序,在系统进行特定范围的数据检索时(或者当系统执行特定区域的数据查询时),因为这些数据是高度关联的(或者说是紧密相关的),数据库无需从多个连续的数据块中读取信息(或者提取数据),从而显著减少了IO操作次数。
聚簇索引的限制:
现有大多数MySQL数据库仅限于Innodb数据引擎具备聚簇索引功能,而Myisam不支持聚簇索引功能
因为数据的物理存储排序机制仅支持一种方式,因此MySQL数据库系统中的每一个表最多只能设置一个聚簇式索引。这种情况下其核心字段通常是该表的主键字段。
充分运用聚簇索引的优势后发现,在InnoDB表中最好选用有序ID作为主键列,因为不建议使用无序ID如UUID等。
主键索引为何采用自增的方式: 1、业务需求,有序。2、能使用到聚簇索引
(2)、全文索引
分词技术
创建表结构名为'article',
包含一个自增整数主键字段,
一个字符型标题字段(长度限制200字符),
一个文本内容字段,
其中 primary key 由上述自增整数主键组成,
并且设置全文索引在标题和内容两个字段上;
引擎类型设为MyISAM,默认字符集设为utf8
不同于like方式的的查询:
SELECT * FROM article WHERE content LIKE ‘%查询字符串%’;
全文索引用match+against方式查询:
SELECT * FROM article WHERE MATCH(title,content) AGAINST (‘查询字符串’);
明显的提高查询效率。
限制:
在MySQL 5.x之前的版本中仅限于使用MyISAM这种存储引擎,在MySQL 5.x之后引入了INODB这种存储引擎。默认情况下官方版本不提供内置的中文分词功能,默认情况下已实现对多语言的支持需要依赖外部的中文分词工具或插件自MySQL 7.x系列起,默认情况下已实现对多语言的支持
在大数据时代的背景下
(3)、哈希索引
Hash索引仅限于Memory和NDB这两种引擎的支持。Memory引擎默认支持Hash索引。当多个哈希值相同时,则会导致哈希碰撞;此时索引将采用链表形式存储。
NoSQL采用此中索引结构。
