SQL优化(二)、2.1索引分类

本文深入解析MySQL中的四种索引类型:b-tree、hash、r-tree和全文索引,重点介绍了不同存储引擎如myisam、memory和innodb对这些索引的支持情况,以及前缀索引的使用和限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引是数据库中较常用的优化手段之一,下面让我们看看索引的分类和使用

索引的存储分类
索引是在mysql 的存储引擎层中实现的,而不是在服务器层实现的。意味着每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型。
下面是三个比较常用的引擎支持的索引类型比较(myisam,memory,innodb)
在这里插入图片描述

目前mysql提供了4种索引。

  • b-TREE索引:最常见的索引类型,大部分引擎都支持b树索引。
  • hash索引:只有memory/heap引擎支持,使用场景较简单,适用于key-value查询,比b-tree索引查询更迅速;hash索引不适用范围查询,例如<、>、<=、>= 。即如果使用memory/heap引擎,并且where 条件中不使用“=“进行索引列,那么就不会使用索引。
  • r-tree索引(空间索引):空间索引是myisam的一个特殊的索引类型,主要用做地理空间数据类型,使用较少。
  • full-text(全文索引):全文索引也是myisam的一个特殊索引类型,主要用做全文索引,innodb从mysql5.6开始提供对全文索引的支持。

mysql目前不支持函数索引,但是能对列的前面某一部分进行索引,例如title前10个字符进行索引,这个特性可以大大缩小索引文件的大小,但是前缀索引的缺点也比较明显,就是有排序order by 和 分组 group 不用 操作的时候无法使用前缀索引。

举一个创建前缀索引的小例子:

-- 如果存在就删掉,原本没有的话执行执行下一个语句
 mysql> drop index idx_title on film;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> create index idx_title on film(title(10));
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

附:hash索引和b-tree索引是比较常用的索引,memory/heap引擎只有在“=“的条件下 才会使用索引。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值