Mysql中InnoDB和MyISAM两种表类型的区别
发布时间:2020-12-12 02:19:37 所属栏目:MySql教程 来源:网络整理
导读:众所周知,InnoDB和MyISAM是mysql中最常用的两种表的类型,MyISAM是默认的类型。它们的区别很多,主要是侧重点不同,InnoDB支持一些高级处理,而MyISAM强调性能,当然强调性能的同时就要牺牲一些东西了。 现在对比一下统计行数的语句(select count(*)|(1)|(Pr
众所周知,InnoDB和MyISAM是mysql中最常用的两种表的类型,MyISAM是默认的类型。它们的区别很多,主要是侧重点不同,InnoDB支持一些高级处理,而MyISAM强调性能,当然强调性能的同时就要牺牲一些东西了。 现在对比一下统计行数的语句(select count(*)|(1)|(Primary Key)),在Mysql中新建两个表,分别是MyISAM和InnoDB类型的: 代码CREATE TABLE `Table1` (`id` int(11) NOT NULL, `name` char(50) character set ucs2 default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 CREATE TABLE `Table2` ( `id` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 然后随机的往这两张表中插入一些记录,比如都插入2条。 然后执行一下语句: select count(*) from Table2 注意:这里的count(*)和count(id)及count(1)其实没有什么区别了,因为我们新建这张表时已经建好了主键,mysql和大多数的数据库引擎一样会做一些优化,它会去根据主键索引来统计。 以上的语句结果当然都是2。下面分析这两句话的执行过程: explain select count(*) from Table1explain select count(*) from Table2 得到的执行计划分别如下: 第一句: | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+ | 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Select tables optimized away | +----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+ 第二句: +----+-------------+--------+-------+---------------+---------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+--------+-------+---------------+---------+---------+------+------+-------------+ | 1 | SIMPLE | Table2 | index | NULL | PRIMARY | 4 | NULL | 3 | Using index | +----+-------------+--------+-------+---------------+---------+---------+------+------+-------------+ 由此,我们能很明显的看出Table1是MyISAM类型的表,统计行数时它已经是最优的语句了( Select tables optimized away ,表示已经不能再优化了,一些资料上说MyISAM类型的表将Rows存在一个地方,查询时直接使用即可。)。Table2是InnoDB类型的表,统计行数时它将使用聚集索引进行统计。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |