当前位置: 首页 > 知识库问答 >
问题:

mysql - MySQL创建索引USING BTREE有和没有区别是什么?

郑俊弼
2023-12-27
CREATE INDEX idx_name ON table_name(column_name);
CREATE INDEX idx_name ON table_name(column_name) USING BTREE;

上面是MySQL创建索引的语句,我想问一下USING BTREE有和没有区别是什么?我看有些文章【https://www.cnblogs.com/zqlmianshi/p/17291575.html】说没有USING BTREE是创建B-Tree索引结构,有USING BTREE是创建创建B+Tree索引结构。
我在navicat上试了一下发现没有区别:

所以问问各位的意见,

  • (1)USING BTREE有和没有区别是什么?
  • (2)USING BTREE中的BTREE是B+树还是B树?

共有2个答案

米裕
2023-12-27

Mysql索引默认都 B+Tree的数据结构

巴博耘
2023-12-27

我觉得这个问题,B 树的起名者起码得背一半锅。

人们所说的 B-Tree 的中间那个 -连字符、而非减号。你也可以省略它,直接写作 B Tree。

而 B+Tree 本来就是一种 B-Tree(即所谓的变种树)。

二者的关系就好比阳光玫瑰跟葡萄的关系(吃葡萄 ing... ��) —— 阳光玫瑰跟巨峰之间可以对比,但你说阳光玫瑰跟葡萄有啥可对比的呢?葡萄本身有的特征,阳光玫瑰一样全都具备;但反过来说阳光玫瑰有一些独有的特征,葡萄这个大类却不一定都具备。

所以 B-Tree 跟 B+Tree 并不是非此即彼的关系。

目前 MySQL 中无论哪种存储引擎,但凡涉及到 B-Tree 的,一律都是用的 B+Tree。

P.S. 所以你贴的那篇文章吧……不能说它写错了,但确实非常容易给人造成误解,以为里面提到的 B+Tree 跟 B-Tree 是俩东西。

 类似资料:
  • 问题内容: 对于一个宠物项目,数据库进入了顶峰, 元数据 达到了顶峰,我很难理解该命令与MySQL命令之间的区别(如果有)。 有什么区别吗?如果不是这样,这是关系数据库行为的一种相当典型的模式(我听说过,对于其他数据库(例如Oracle),模式存在于数据库中,而不是与数据库处于同一级别)。 谢谢! 问题答案: MySQL的文档说: CREATE DATABASE创建具有给定名称的数据库。要使用此语

  • 问题内容: 我曾经与宝石打交道,但如今经常听到关于宝石的消息。此外,默认情况下,它也包含在 Gemfile 中。 使用宝石有什么区别和优势? 问题答案: 这是来自mysql2 gem页面的引用: 是的…但是为什么呢? 有人:老兄,Mysql gem可以正常工作。 我:的确可以,但是只给您nil和用于字段值的字符串。让您在Ruby-land中将它们转换为正确的Ruby类型-这很慢。 有人:好的,但是

  • 主要内容:基本语法,创建普通索引,创建唯一索引创建索引是指在某个表的一列或多列上建立一个索引,可以提高对表的访问速度。创建索引对 MySQL 数据库的高效运行来说是很重要的。 基本语法 MySQL 提供了三种创建索引的方法: 1) 使用 CREATE INDEX 语句 可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语句不能创建主键。 语法格式: CREATE <索引名> ON <表名> (<列名> [

  • 问题内容: 我遇到了两种方法来自动增加mysql中的ID。 一个是 SERIAL ,另一个是 AUTOINCREMENT 。 因此,假设我想创建一个表myfriends。我可以通过两种方式创建它: 1) 2) 两者之间有什么区别? 要么 有谁能比别人有优势? 请帮忙。 问题答案: 根据文档 SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的

  • 问题内容: 在这两个条款中,主要区别在于参数传递。因为这是两个参数,我们可以通过合并2或3,但是这两个之间是否还有其他区别?以及它在MSSql中的不同之处。 问题答案: 两者之间的主要区别是该函数接受两个参数,如果不存在则返回第一个,如果第二个则返回第二个。 函数可以采用两个或多个参数,并返回第一个非NULL参数,或者如果所有参数均为null,例如: 更新: MSSQL做更严格的类型和参数检查。此

  • 本文向大家介绍UNIX TIMESTAMPS和MySQL TIMESTAMPS有什么区别?,包括了UNIX TIMESTAMPS和MySQL TIMESTAMPS有什么区别?的使用技巧和注意事项,需要的朋友参考一下 在MySQL中,UNIX TIMESTAMPS存储为32位整数。另一方面,MySQL TIMESTAMPS也以类似的方式存储,但以可读的YYYY-MM-DD HH:MM:SS格式表示。