Heim > Fragen und Antworten > Hauptteil
漂亮男人2017-05-16 13:07:44
亲测(MySQL 版本 5.7.18),分别对 60W、1W 条记录进行测试
有索引情况 MyISAM 比 Innodb 查询快,相差微小
无索引情况 MyISAM 比 Innodb 查询快,查询速度相差在 1 倍左右
ringa_lee2017-05-16 13:07:44
大量的查询,而很少修改(insert update delete) ==> MyISAM
全文搜索支持,且MySQL版本小于5.5 ==> MyISAM
其他情况,请使用innodb
题外话:
大部分人都很懒,包括我,估计没有多少“雷锋”会花时间去给你证明一个网上有很多结论的东西。
你应该自己搜索一下相关的话题,我相信你能找出一大堆别人做过的比较。如果你对那些结论还是持怀疑态度,可以自己动手去研究,毕竟网上别人做过的比较有可能是比较老的mysql版本。你可以自己搞一个benchmark测试,如果你问怎么搞出一个有说服力的benchmark,或许才是一个更好的问题。
習慣沉默2017-05-16 13:07:44
并不能直接了当的说哪个更快,更需要根据业务逻辑来看,不过值得一提的是在网上有一个误区,很多人都认为查询起来myisam
一定要比innodb
快,的确,当我们在对整个表不加以任何条件进行查询统计时,myisam
的确要快一些,这是因为myisam
在插入数据的时候会更新表的数据,当我们查询的时候,直接走的统计数量
但是,一旦当我们给sql
语句加入条件时,innodb
并不一定会比myisam
慢,因为此时都是走的磁盘
或索引
,即使是面对第一种情况,我们也可以用一个总数跟进表
来统计总数,所以,一般没有特殊情况的话,建议InnoDB
.
淡淡烟草味2017-05-16 13:07:44
但分析两个引擎情况下,MYISAM要比INNODB快,因为INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多:
1.INNODB,INNODB要缓存,MYISAM只缓存索引块,这中间还有换进换出的减少。
2.INNODB寻址要映射到块,再到行,MYISAM记录的直接是文件的OFFSET,定位比INNODB要快。
3.INNODB还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和维护MVCC(Multi-Version Concurrency Control)多版本并发控制