MySQL索引类型和索引方法

技术漫步 2023-11-16 PM 163℃ 0条

一、索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

建立索引会占用磁盘空间的索引文件。

二、索引类型

  • 普通索引(normal):仅加速查询
  • 唯一索引(unique):加速查询 + 列值唯一(可以有null)
  • 主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
  • 组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
  • 全文索引(fulltext):对文本的内容进行分词,进行搜索

ps.

索引合并,使用多个单列索引组合搜索

覆盖索引,select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖

三、索引方法

HASH

由于HASH的唯一(几乎100%的唯一)及类似键值对的形式,很适合作为索引。
HASH索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。
但是,这种高效是有条件的,即只在“=”和“in”条件下高效,对于范围查询、排序及组合索引仍然效率不高。

BTREE

BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),
每次查询都是从树的入口root开始,依次遍历node,获取leaf。 这是MySQL里默认和最常用的索引类型。

四、索引规约(阿里巴巴Java开发手册)

  • 主键索引名为 pk_字段名;
  • 唯一索引名为 uk_字段名;
  • 普通索引名则为 idx_字段名。

说明:pk_即 primary key;uk_即 unique key;idx_即 index 的简称。

标签: MySQL索引

非特殊说明,本博所有文章均为博主原创。

评论啦~