首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BTREE的优势?

BTREE的优势?
EN

Stack Overflow用户
提问于 2009-11-06 14:20:18
回答 5查看 34.7K关注 0票数 33

我创建没有USING BTREE子句的索引。使用BTREE索引有什么优势吗?

代码语言:javascript
复制
CREATE INDEX `SomeName` USING BTREE ON `tbl_Name`(`column_name`);
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-06 14:27:10

BTREE是默认的索引方法。你可以安全地省略它。

票数 28
EN

Stack Overflow用户

发布于 2009-11-06 14:30:12

首先,取决于所使用的存储引擎,您可能没有选择(例如,InnoDB只使用BTREE作为索引)。

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

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

简而言之:继续使用BTREE,不管是隐式的(如果BTREE是所使用的存储的默认值),还是显式的。了解其他类型的索引,这样您就可以了解它们了。

编辑:(在搜索可能使用替代索引类型的情况下)

实际上,对于RTREE索引来说,情况是相当直接的。只有在MySQL环境下才支持这些,即包含地理位置上下文的数据库,如“空间”数据库模型中的Point和其他对象)。

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

票数 54
EN

Stack Overflow用户

发布于 2009-11-06 14:29:52

这取决于你使用的是哪个存储引擎。对于大多数人来说,BTREE是默认的,因此指定它不会真正改变任何事情。对于内存/堆和NDB等存储引擎,默认情况下默认使用哈希索引。

更多信息可以找到这里。

从性能的角度来看,B树还是散列索引对您是否有利,取决于数据和访问它的方式。如果您知道您的查询将精确地针对一行或分散的单个行,那么哈希索引可能是有用的。除此之外,我通常更喜欢BTREE索引,因为数据是排序的,因此使范围查询和返回多行的查询更有效。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1687910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档