我在MySQLWorkbench上注意到,在进行设计前,您可以选择如何存储索引。存储类型如下:
在研究这个问题时,我发现了一些在我头上很难理解的信息,所以我在寻找关于这些和/或为什么你应该选择一个而不是另一个的区别的实用信息。
而且,我以前从未选择过存储类型,因此我假设MySQL选择的是默认存储类型(BTREE?)
发布于 2011-10-09 12:51:09
BTree (实际上是B*树)是一种高效的有序键值映射。意思:
例如“上午9点至下午5点之间的所有事件”,“姓氏以‘R’开头”
RTree是一个spatial index,这意味着它可以快速识别2维或更多维度中的close值。它用于地理数据库中的查询,如:
距离(x,y)在X米以内的所有点
散列是一个无序的键值映射。它甚至比BTree:O(1)而不是O(log n)更有效。
但是它没有任何排序的概念,所以它不能用于排序操作或获取范围。
顺便提一句,最初,MySQL只允许MEMORY表上的哈希索引;但我不确定这些年来是否已经改变了。
发布于 2021-06-22 15:06:34
被接受的答案包含了良好的信息质量。索引类型选择受到应用于数据库表的存储引擎的限制,以下是MySQL中存储引擎支持的索引类型的额外信息。参见表16.1 MySQL 8.0文档中的替代存储引擎中的存储引擎特性摘要
简而言之,下面是支持这3种索引类型的存储引擎。
附带说明:
https://softwareengineering.stackexchange.com/questions/113256
复制相似问题