一.引言
索引是数据库中最重要的概念之一,它的作用是为了提高数据的查询速度,索引好比一本词典的目录,通过这个“目录”便可以快速查找到你感兴趣的词语。
二.索引的数据结构
Mysql索引主要有两种结构:B+Tree索引和Hash索引。我们平常所说的索引,如果没有特别指明,一般都是指B树结构组织的索引(B+Tree索引)。
B+Tree是一种多路查找树,它可以大幅提高海量数据的查询速度。关于其详细介绍,可查看文末的参考资料。
三.索引的分类
1.单列索引:一个索引只包含单个列,它又可细分为
- 普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
- 唯一索引:索引列中的值必须是唯一的,但是允许为空值
- 主键索引:是一种特殊的唯一索引,不允许有空值。
2.组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀原则。
建立组合索引时应遵循“最左前缀”原则,把最常用作为检索或排序的列放在最左,比如假设建立了user_id, user_name, status(按该顺序建立)复合索引, 实际上是创建了三个MySQL可利用的索引
user_id, user_name, status
user_id, user_name
user_id
只要在查询中指定了user_id的值,无论是否有user_name或者status,MySQL都可以使用这个索引。但是,如果不包含user_id,只包含了user_name或status,那么,MySQL不能利用这个索引。
3.全文索引:只有在MyISAM存储引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引
4.空间索引:空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。
参考资料