什么';在MySQL中使用和不使用BTREE的区别是什么;创建表';陈述
我是SQL新手,我想创建一个表,我看到一个示例:什么';在MySQL中使用和不使用BTREE的区别是什么;创建表';陈述,mysql,indexing,mysql-workbench,create-table,b-tree,Mysql,Indexing,Mysql Workbench,Create Table,B Tree,我是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` (`
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
我一直在网上阅读关于使用BTREE的
的文章,但还是有点困惑,为什么idx1
没有它,而idx2
,idx3
有使用BTREE
?区别和目的是什么?使用它有什么好处?谢谢。除了语法,没有区别
- 默认值为
BTree
- 如果您什么也不说,或者即使您说的是
散列
,它也会自动转换为BTree
基本上,BTree是一个好的、通用的索引机制
- 查找特定行(“点查询”)非常快。例如:
其中x=123
- 扫描“范围”或行非常有效。例如:
其中x介于333和444之间(对比:散列非常慢)
如果需要全文和空间格式,则需要明确的规范
你真的应该从MyISAM迁移到InnoDB
参见维基百科:MyISAM使用B-树;InnoDB使用B+树