mysql从innodb转到MyIsam的count查询效率极大提升

近日,公司有个业务日志的表超过500万后,count(*)需要4分55秒,将该表的存储引擎从innodb转换到MyIsam后,查询效率极大提升,从4分55秒优化到0.01秒。

下面是操作步骤:

mysql> select count(*) from tb_option_log; 用时4min55s

mysql> show table status from 库名 where name='tb_option_log';  Engine显示为:InnoDB

mysql> alter table tb_option_log type ='myisam';

www.2cto.com

mysql> show table status from 库名 where name='tb_option_log';  Engine显示为:MyISAM

mysql> select count(*) from tb_option_log; 用时0.01s

补充资料:

MyISAM

MyISAM 是MySQL缺省存贮引擎 .

每张MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex) 引伸。

因为MyISAM相对简单所以在效率上要优于InnoDB..小型应用使用MyISAM是不错的选择.

MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦

以下是一些细节和具体实现的差别:

www.2cto.com

1.InnoDB不支持FULLTEXT类型的索引。

2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作有些不同,InnoDB类型的表用count(*)或者count(主键),加上where col 条件。其中col列是表的主键之外的其他具有唯一约束索引的列。这样查询时速度会很快。就是可以避免全表扫描。

3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

来源:https://www.2cto.com/database/201206/135664.html

mysql从innodb转到MyIsam的count查询效率极大提升相关推荐

  1. mysql update in_mysql update join优化update in查询效率

    数据库版本:5.6.16 update in 修改数据,结果执行时间过慢,一直不出结果. SQL语句及执行计划如下: UPDATE erp_order_extra SET last_time=1231 ...

  2. mysql多表 性能_Mysql 多表联合查询效率分析及优化

    1. 多表连接类型 1. 笛卡尔积(交叉连接)在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: SELECT*FROMtable1CROSSJOINtabl ...

  3. SqlServer和MySql允许脏读的实现方式,提高查询效率

    --Sql Server 允许脏读查询sql select * from category with(nolock) --MySql 允许脏读查询sql Mysql没有语法糖,需要原生的sql SET ...

  4. MySQL之innodb与myisam:锁 事务 外键 主键 存储结构 存储大小 索引 count 注重点

    行锁:innodb支持行锁 事务:innodb支持事务 外键:MyISAM不支持InnoDB支持 主键:myisam允许没有索引和主键的表存在:innodb如果没有设定主键或者非空唯一索引,会生成一个 ...

  5. MySQL存储引擎中的MyISAM和InnoDB区别详解

    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...

  6. MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)

    MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过 ...

  7. Mysql存储引擎详解(MyISAM与InnoDB的区别)

    Mysql存储引擎详解(MyISAM与InnoDB的区别) 存储引擎     MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平 ...

  8. MySQL 中 MyISAM 中的查询为什么比 InnoDB 快?

    MySQL 中 MyISAM 中的查询为什么比 InnoDB 快? 关于,这个问题,我网上看了很多答案.大多内容都雷同,但是我要强调的是,并不是说 MYISAM 一定比 InnoDB 的 select ...

  9. mysql中engine=innodb和engine=myisam的区别

    1/ISAM ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数.因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源.I ...

最新文章

  1. zz Expect的安装
  2. 二位数组的子数组最大值
  3. OVS packet处理流程(三十二)
  4. 各个大厂的机器学习平台概述
  5. 将隐式神经表示(INR)用于2D图像
  6. Vue2 模板template的四种写法总结
  7. 【华为云技术分享】云图说丨初识标签管理服务:给你的云资源贴个条
  8. angularjs--resource
  9. Spark2.1.0——运行环境准备
  10. su室内插件_草图大师做室内需要用到那些插件
  11. Hadoop系列五之版本差别
  12. 手游实时阴影方案之Projector Shadow
  13. C++:[编程题]买帽子
  14. SEOer必读:50个网站推广方法
  15. ndoutils(ndo2db)安装难点
  16. MIPI屏上电时序问题
  17. tensorflow聊天机器人python实现_代码详解|tensorflow实现 聊天AI--PigPig养成记(1)
  18. 普通话转换成方言的语音识别方法
  19. HTML 画布入门(六)如何将图像添加到 HTML 画布
  20. Android监听Home键

热门文章

  1. 计算机学院的行话,只有你和你同学知道的“专业行话”
  2. native固定吸顶 react_React Native固定底部TextInput,解决键盘遮挡、列表滚动问题
  3. Clickhouse Engine kafka 将kafka数据同步clickhouse
  4. 博客园首页新随笔联系管理订阅 Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
  5. 3.QT中QCommandLineParser和QCommandLineOption解析命令行参数
  6. Java与C#平台通信 WCF CXF SOAP
  7. SDK,NDK,ADT工具下载常用地址
  8. ajax webmethod,JQuery直接调用asp.net后台WebMethod方法
  9. 使用proc文件系统
  10. Android持久化存储(3)SQLite数据库的使用