Mysql索引分类及使用场景

概念

  索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果没有索引,数据库在查找记录时会逐条进行查找,有索引能够快速进行定位,类似在链表和数组中查找数据的区别.

设计原则

  1. 通常用于where子句中的列,这样能提高查找速度.
  2. 使用唯一索引,即索引列的数据都是唯一的,这样便于进行排序和查找.
  3. 使用短索引,即如果对字符串或者te文本类型进行索引时,选择字段的前面一部分字节进行索引,这样能提高搜索速度.
  4. 利用最左前缀,如果存在联合索引,则在搜索时选择索引最左侧的一列进行检索.
  5. 避免过度索引,索引会降低插入更新等操作效率,还会占用存储空间.

使用场景

  1. 匹配全值(Match the full value), 对索引中所有列都指定具体值,即是对索引中的所有列都有等值匹配的条件。
  2. 匹配值的范围(Match a range of values),对索引中的值按范围进行搜索.
  3. 匹配最左前缀(Match a leftmost prefix),即匹配联合索引最左边一列.
  4. 仅查询索引列(Index only query),即搜索索引列的值.
  5. 匹配列前缀(Match a column prefix),搜索索引列开头部分.
  6. 能够实现索引匹配部分精确而其他部分进行范围匹配(Match one part exactly andmatch a range on another part),即一部分精确匹配,一部分按范围匹配.

分类

  1. BTREE索引

        BTREE索引为最常用的索引类型,底层由B+树实现,时间复杂度为logn,MyISAM,InnoDB,Memory等引擎均支持BTREE索引.

  1. HASH索引

         HASH索引主要用于Memory,Heap等引擎,底层由散列表实现,所以在数据分散度高的情况下效率会非常高,但是在数据重复度  高时效率会下降,并且HASH索引不支持按范围进行搜索,只能用=进行搜索.

  1. RTREE索引

          RTREE索引为空间索引,一般较少用到,主要用于地理空间索引,由MyISAM引擎支持.

  1. FULL-TEXT索引

          FULL-TEXT索引为全文索引,支持引擎有MyISAM,InnoDB(5.6).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值