首頁  >  問答  >  主體

php - MySQL 儲存引擎

mysql 5.6以後,innodb和myisam 哪個查詢資料比較快。能不能給個證明。

高洛峰高洛峰2699 天前709

全部回覆(4)我來回復

  • 漂亮男人

    漂亮男人2017-05-16 13:07:44

    親測(MySQL 版本 5.7.18),分別對 60W、1W 筆記錄進行測試
    有索引情況 MyISAM 比 Innodb 查詢快,相差微小
    無索引情況 MyISAM 比 Innodb 查詢快,查詢速度相差在 1 倍左右

    無索引情況 MyISAM 比 Innodb 查詢快,查詢速度相差在 1 倍左右🎜

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-16 13:07:44

    大量的查詢,而很少修改(insert update delete) ==> MyISAM

    全文搜尋支持,且MySQL版本小於5.5 ==> MyISAM

    其他情況,請使用innodb

    題外話:
    大部分人都很懶,包括我,估計沒有多少「雷鋒」會花時間去給你證明一個網路上有很多結論的東西。
    你應該自己搜尋一下相關的話題,我相信你能找出一大堆別人做過的比較。如果你對那些結論還是持懷疑態度,可以自己動手去研究,畢竟網路上別人做過的比較有可能是比較老的mysql版本。你可以自己搞benchmark測試,如果你問怎麼搞出一個有說服力的benchmark,或許才是一個更好的問題。

    回覆
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:07:44

    並不能直接了當的說哪個更快,更需要根據業務邏輯來看,不過值得一提的是在網上有一個誤區,很多人都認為查詢起來myisam一定要比innodb快,的确,当我们在对整个表不加以任何条件进行查询统计时,myisam的确要快一些,这是因为myisam在插入数据的时候会更新表的数据,当我们查询的时候,直接走的统计数量
    但是,一旦当我们给sql语句加入条件时,innodb并不一定会比myisam慢,因为此时都是走的磁盘索引,即使是面对第一种情况,我们也可以用一个总数跟进表来统计总数,所以,一般没有特殊情况的话,建议InnoDB.

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味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)多版本並發控制

    回覆
    0
  • 取消回覆