MySQL索引的优缺点及分类

索引在MySQL也叫做key或index。在MySQL中索引是在存储引擎层实现的。索引除了可以快速定位到表的指定位置,增加数据的查询速度,而且根据数据结构不同还有一些附加作用:像B-Tree是按照顺序存储因此支持ORDER BY排序和GROUP BY分组查询。不过索引的劣势也很明显,索引的建立也会占用物理空间,在数据量越来越大时,索引对性能的影响会越来越大。

索引的优缺点:

优点:

  • 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
  • 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
  • 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
  • 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
  • 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 

缺点:

  • 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
  • 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
  • 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

索引的分类:

索引类:

索引根据实现的数据结构可以分为B-Tree索引,哈希索引,空间数据索引(R-Tree),全文索引等 

索引类型数据结构支持存储引擎特点
B-Tree索引B-Tree

InnoDB、MyISAM、Memory

查询快,支持有序查询

哈希索引hashTable

Menory显示支持,nnoDB自适应哈希索引

查询快
R-Tree索引R-TreeMyISAM 
全文索引(FULLTEXT索引)双B-Tree

MyISAM、InnoDB

 

作用范围分类:

按照索引的作用范围,可以分为单列索引和多列索引;

索引类型范围说明
单列索引作用在单列

单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引。

多列索引作用在多个列只有查询条件中使用了这些字段中第一个字段时,索引才会被使用。

常见索引种类:

索引类型特点
普通索引

最基本的索引,仅是为了加速查询

主键索引不允许有空值,指定为“PRIMARY KEY”
唯一索引要求字段所有的值是唯一的(与主键索引一致),但是允许有空值。
组合索引列值组成一个索引,专门用于组合搜索,其效率大于索引合并,同多列索引
全文索引对文本的内容进行分词,进行搜索

根据数据存储方式分类:

InnoDB是实现聚簇索引的的代表,在InnoDB通过主键簇集数据。

索引种类数据结构特点
聚簇索引(主键索引)B-Tree查询快
非聚簇索引(二级索引)B-Tree二级索引访问需要两次索引查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值