Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';在MySQL中使用和不使用BTREE的区别是什么;创建表';陈述_Mysql_Indexing_Mysql Workbench_Create Table_B Tree - Fatal编程技术网

什么';在MySQL中使用和不使用BTREE的区别是什么;创建表';陈述

什么';在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` (`

我是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

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

除了语法,没有区别

  • 默认值为
    BTree
  • 如果您什么也不说,或者即使您说的是
    散列
    ,它也会自动转换为
    BTree
基本上,BTree是一个好的、通用的索引机制

  • 查找特定行(“点查询”)非常快。例如:
    其中x=123
  • 扫描“范围”或行非常有效。例如:
    其中x介于333和444之间(对比:散列非常慢)
如果需要全文和空间格式,则需要明确的规范

你真的应该从MyISAM迁移到InnoDB

参见维基百科:MyISAM使用B-树;InnoDB使用B+树