在MySQL中使用和不使用BTREE有什么区别'声明吗?



我是SQL新手,我想创建一个表,我看到一个例子:

DROP TABLE IF EXISTS `aaa`;
CREATE TABLE `aaa` (
`date` datetime DEFAULT NULL,
`id` varchar(200) DEFAULT NULL,
...
`source` varchar(200) DEFAULT NULL,
KEY `idx1` (`source`),
KEY `idx2` (`id`,`date`) USING BTREE,
KEY `idx3` (`date`) USING BTREE
) ENGINE=MyISAM

我一直在网上阅读关于USING BTREE,但仍然有点困惑,为什么idx1没有它,idx2, idx3USING BTREE ?区别和目的是什么?使用它的好处是什么?谢谢。

除了语法之外,没有区别。

  • 默认为BTree
  • 如果你什么都没说,或者即使你输入了HASH,它也会无声地转换为BTree

本质上BTree是一个很好的、通用的索引机制。

  • 查找特定行("点查询")非常快。例如:WHERE x = 123
  • 扫描"范围"或者行是非常有效的。例如:WHERE x BETWEEN 333 AND 444(对比:Very slow for HASH)

FULLTEXT和SPATIAL,如果需要,需要明确的规范。

你真的应该从MyISAM转向InnoDB。

参见Wikipedia: MyISAM使用B-Tree;InnoDB使用B+Tree

相关内容

  • 没有找到相关文章

最新更新