当前位置: 首页 > 资讯 > >正文

软件测试 |BTREE索引与HASH索引

来源:哔哩哔哩    时间:2023-07-28 16:11:30

MEMORY 存储引擎的表可以选择使用 BTREE 索引或者 HASH 索引,两种不同类型的索引各有其不同的适用范围。HASH 索引有一些重要的特征需要在使用的时候特别注意,如下所示。

只用于使用=或<=>操作符的等式比较。

优化器不能使用HASH索引来加速ORDER BY操作。


(资料图片)

MySQL不能确定在两个值之间大约有多少行。如果将一个MyISAM表改为HASH索引的MEMORY表,会影响一些查找的执行效率。

只能使用整个关键字来搜索一行。

而对于BTREE索引,当使用>、<、>=、<=、BETWEEN、!=或者<>,或者LIKE'pattern'(其中‘pattern’不可以通配符开始)操作符时,都可以使用相关列上的索引。

下列范围查询适用于BTREE索引和HASH索引:

下列范围查询只适用于 BTREE 索引:

例如,创建一个和 city 表完全相同的 MEMORY 存储引擎的表 city_memory:

当对索引字段进行范围查询的时候,只有 BTREE 索引可以通过索引访问:

而 HASH 索引实际上是全表扫描的:

了解了 BTREE 索引和 HASH 索引不同后,当使用 MEMORY 表的时候,如果是默认创建的 HASH索引,就要注意 SQL 语句的编写,确保可以使用上索引,如果一定要使用范围查询,那么在创建索引的时候,就应该选择创建成 BTREE 索引。

搜索微信公众号:TestingStudio霍格沃兹的干货都很硬核

X 关闭

推荐内容

这是标题

Copyright ©  2015-2023 非洲养生网版权所有  备案号:沪ICP备2022005074号-8   联系邮箱:58 55 97 3@qq.com