mysql表两种类型区别_Mysql中InnoDB和MyISAM两种表类型的区别

众所周知,InnoDB和MyISAM是MysqL中最常用的两种表的类型,MyISAM是默认的类型。它们的区别很多,主要是侧重点不同,InnoDB支持一些高级处理,而MyISAM强调性能,当然强调性能的同时就要牺牲一些东西了。

现在对比一下统计行数的语句(select count(*)|(1)|(Primary Key)),在MysqL中新建两个表,分别是MyISAM和InnoDB类型的:

@H_502_6@CREATETABLE`Table1` (

`id`int(11)NOTNULL,

`name`char(50)charactersetucs2defaultNULL,PRIMARYKEY(`id`)

) ENGINE=MyISAMDEFAULTCHARSET=latin1CREATETABLE`Table2` (

`id`int(11)NOTNULL,PRIMARYKEY(`id`)

) ENGINE=InnoDBDEFAULTCHARSET=latin1

然后随机的往这两张表中插入一些记录,比如都插入2条。

然后执行一下语句:

@H_502_6@selectcount(*)fromTable1selectcount(*)fromTable2

注意:这里的count(*)和count(id)及count(1)其实没有什么区别了,因为我们新建这张表时已经建好了主键,MysqL和大多数的数据库引擎一样会做一些优化,它会去根据主键索引来统计。

以上的语句结果当然都是2。下面分析这两句话的执行过程:

@H_502_6@explainselectcount(*)fromTable1

explainselectcount(*)fromTable2

得到的执行计划分别如下:

第一句:+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+

| 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类型的表,统计行数时它将使用聚集索引进行统计。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值