2014-05-10 47 views
1

我正在研究我的數據庫表,並出現了一些我無法解釋說:爲什麼使用mySQL在「CREATE TABLE」中出現「USING BTREE」?

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使用B樹(之間的**,我不能讓它大膽),但有趣的是別人的arent 。所有索引都是「BTREE」,我只是不明白它爲什麼強調CREATE TABLE表達式

+0

你是怎麼創建表? –

+0

其實我用的是MySQL查詢瀏覽器,它允許我以類似的方式創建「視覺」字段 –

回答

1

btree是數據結構。

這是索引數據的好方法。

也許谷歌的B樹

+0

「無論如何默認是BTREE,所以這些語句只是顯式的。」這就是爲什麼我不明白爲什麼它標記在那裏 - 但它不出現 –

2

這意味着你的指數使用下引擎罩B樹模型,而不是一個HashMap中。

B樹是二叉樹的泛化。它們適用於不平等(<,>),範圍和順序。哈希曲線不支持這些事情,但對於相等/不平等檢查更快。我不確定哪個性能比KIND更好。

無論如何,默認是BTREE,所以這些語句只是顯式的。

這裏是MySQL的一個很好的參考:http://dev.mysql.com/doc/refman/5.5/en/index-btree-hash.html

+0

B-樹是一個二叉搜索樹的泛化。 – Gumbo

+0

@Gumbo澄清;謝謝。 「 – Dave

+0

」無論如何,默認是BTREE,所以這些陳述只是明確的。「這就是爲什麼我不明白爲什麼它標記在那裏 - 而它沒有出現 –

相關問題