mysql - BTREE的优势?

标签 mysql b-tree database-indexes

我在没有 USING BTREE 子句的情况下创建索引。使用 BTREE 索引有什么好处吗?

CREATE INDEX `SomeName` USING BTREE ON `tbl_Name`(`column_name`);

最佳答案

首先,根据所使用的存储引擎,您可能别无选择(例如 InnoDB 专门使用 BTREE 作为其索引)。

另外,BTREE 是大多数存储引擎的默认索引类型。

现在...在某些情况下,使用替代索引类型可能会提高性能。在某些情况下(相对罕见的情况)哈希索引可能会有所帮助。请注意,当创建 HASH 索引时,也会生成 BTREE 索引。部分原因是哈希索引只能解析相等谓词。 (哈希索引无法处理 WHERE Price > 12.0 等条件)。

简而言之:继续使用 BTREE,无论是隐式(如果 BTREE 是所用存储的默认值),还是显式。了解其他类型的索引,以便了解它们的需求。

编辑:(在可能使用替代索引类型的搜索情况下)
实际上,RTREE 的情况相当简单。索引。只有在 "SPATIAL" databases 的上下文中,MySQL 才支持这些。 ,即包含地理定位上下文的数据库,例如 GIS 模型中的点和其他对象)。

HASH 索引更通用(不限于特定的应用程序或数据类型),人们通常可以根据自己对哈希的直观理解来获得关于何时这些可能优于旧但忠实的 BTREE 的提示。如前所述,这意味着通常使用相等谓词搜索列。我猜测相对较短的查找表等可能会受益,这取决于 MySQL 中的有效实现。

关于mysql - BTREE的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1687910/

相关文章:

php - 如何从这段代码zf2中获取查询sql指令?

PHP/MySQL : I think I need to use a JOIN here, 但我不知道怎么办

mysql like query 和 sortby 字母的位置

data-structures - AVL 树与 B 树

mysql - 按优化复杂选择查询排序

mysql数据库组合键问题

mysql - 两个日期列之间的日期范围

C++ b树合并

c - 通过 POSIX tdelete() 访问节点数据

mysql - 在 mysql 中执行带索引和不带索引的查询