mysql 索引类型

MySQL中的索引类型主要有以下几种:

  1. 普通索引(NORMAL)
  • 普通索引是最基本的索引类型,没有任何唯一性限制,可以创建在任何数据类型的列上。

  • 普通索引适用于需要提升查询速度但不强制要求数据唯一性的场景。

  1. 唯一索引(UNIQUE)
  • 唯一索引要求索引列的值必须唯一,但允许有空值(NULL值可以存在多个)。

  • 唯一索引可以确保表中的某一列或多列组合的值不会重复。

  • 主键索引是一种特殊类型的唯一索引,表中创建主键时自动创建,一个表只能有一个主键。

  1. 全文索引(FULLTEXT)
  • 全文索引用于对文本内容进行搜索,适用于大型文本数据的检索。

  • 全文索引只能用于MyISAM和InnoDB存储引擎的VARCHAR、CHAR和TEXT类型的列。

  1. 空间索引(SPATIAL)
  • 空间索引是用于地理空间数据类型字段创建的索引,主要用于MyISAM存储引擎。

  • 空间索引支持空间查询,例如计算两点之间的距离等。

  1. 聚集索引(CLUSTERED INDEX)
  • 聚集索引决定了数据在表中的物理存储顺序,通常基于主键创建。

  • 如果没有定义主键,InnoDB会选择第一个非空的唯一索引代替,如果没有非空的唯一索引,则InnoDB会隐式定义一个ROW ID代替。

  • 聚集索引占用的空间最大,因为它保存了全部数据。

  1. 辅助索引(SECONDARY INDEX)
  • 辅助索引也称为二级索引,单张表可以有多个。

  • 辅助索引的叶子节点存储的是对应索引字段的键值和主键ID,而不是整行数据。

  1. 哈希索引(HASH INDEX)
  • 哈希索引基于哈希表实现,支持全值匹配查询,但不支持范围查询和前缀匹配。

  • 哈希索引通过计算索引列的哈希值来定位数据行,具有高效的查找性能。

这些索引类型在不同的使用场景下有不同的优势,选择合适的索引类型可以显著提高数据库查询的性能。

Top