为什么"使用BTREE"出现在" CREATE TABLE"用mySQL?

时间:2014-05-10 11:40:10

标签: mysql sql

我正在检查我的数据库表,看来我无法解释:

CREATE TABLE  `challenges` (
  `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `KIND` enum('1','2','3') NOT NULL DEFAULT '1',
  `TITLE` varchar(255) NOT NULL DEFAULT '',
  `DESCRIPTION` text NOT NULL,
  `DATEAT` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `OWNER_ID` int(10) unsigned NOT NULL DEFAULT '0',
  `SOLVEDREPLAY_ID` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`ID`),
  KEY `Index_2` (`OWNER_ID`),
  KEY `Index_4` (`DATEAT`),
  KEY `Index_3` (`SOLVEDREPLAY_ID`) **USING BTREE**,
  KEY `Index_5` (`KIND`) **USING BTREE**,
  CONSTRAINT `FK_challenges_1` FOREIGN KEY (`OWNER_ID`) REFERENCES `users` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_challenges_2` FOREIGN KEY (`SOLVEDREPLAY_ID`) REFERENCES `uploads` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

Index_3和Index_5正在使用btree(在**之间,我不能使它变粗),但有趣的是其他人不是。所有索引都是“BTREE”,我只是不明白它为什么强调CREATE TABLE表达式

2 个答案:

答案 0 :(得分:2)

这意味着您的索引在引擎盖下使用B树模型,而不是散列图。

B树是二叉树的推广。它们适用于不等式(<>),范围和排序。哈希映射不支持这些事情,但对于相等/不等于检查更快。我不确定哪个对于像你有KIND的小枚举集更好。

无论如何,默认值是BTREE,因此这些陈述只是明确的。

这是MySQL的一个很好的参考:http://dev.mysql.com/doc/refman/5.5/en/index-btree-hash.html

答案 1 :(得分:1)

btree是数据结构。

这是索引数据的好方法。

也许google Btree