mysql从innodb转到MyIsam的count查询效率极大提升
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查询效率极大提升相关推荐
- mysql update in_mysql update join优化update in查询效率
数据库版本:5.6.16 update in 修改数据,结果执行时间过慢,一直不出结果. SQL语句及执行计划如下: UPDATE erp_order_extra SET last_time=1231 ...
- mysql多表 性能_Mysql 多表联合查询效率分析及优化
1. 多表连接类型 1. 笛卡尔积(交叉连接)在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: SELECT*FROMtable1CROSSJOINtabl ...
- SqlServer和MySql允许脏读的实现方式,提高查询效率
--Sql Server 允许脏读查询sql select * from category with(nolock) --MySql 允许脏读查询sql Mysql没有语法糖,需要原生的sql SET ...
- MySQL之innodb与myisam:锁 事务 外键 主键 存储结构 存储大小 索引 count 注重点
行锁:innodb支持行锁 事务:innodb支持事务 外键:MyISAM不支持InnoDB支持 主键:myisam允许没有索引和主键的表存在:innodb如果没有设定主键或者非空唯一索引,会生成一个 ...
- MySQL存储引擎中的MyISAM和InnoDB区别详解
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...
- MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过 ...
- Mysql存储引擎详解(MyISAM与InnoDB的区别)
Mysql存储引擎详解(MyISAM与InnoDB的区别) 存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平 ...
- MySQL 中 MyISAM 中的查询为什么比 InnoDB 快?
MySQL 中 MyISAM 中的查询为什么比 InnoDB 快? 关于,这个问题,我网上看了很多答案.大多内容都雷同,但是我要强调的是,并不是说 MYISAM 一定比 InnoDB 的 select ...
- mysql中engine=innodb和engine=myisam的区别
1/ISAM ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数.因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源.I ...
最新文章
- zz Expect的安装
- 二位数组的子数组最大值
- OVS packet处理流程(三十二)
- 各个大厂的机器学习平台概述
- 将隐式神经表示(INR)用于2D图像
- Vue2 模板template的四种写法总结
- 【华为云技术分享】云图说丨初识标签管理服务:给你的云资源贴个条
- angularjs--resource
- Spark2.1.0——运行环境准备
- su室内插件_草图大师做室内需要用到那些插件
- Hadoop系列五之版本差别
- 手游实时阴影方案之Projector Shadow
- C++:[编程题]买帽子
- SEOer必读:50个网站推广方法
- ndoutils(ndo2db)安装难点
- MIPI屏上电时序问题
- tensorflow聊天机器人python实现_代码详解|tensorflow实现 聊天AI--PigPig养成记(1)
- 普通话转换成方言的语音识别方法
- HTML 画布入门(六)如何将图像添加到 HTML 画布
- Android监听Home键
热门文章
- 计算机学院的行话,只有你和你同学知道的“专业行话”
- native固定吸顶 react_React Native固定底部TextInput,解决键盘遮挡、列表滚动问题
- Clickhouse Engine kafka 将kafka数据同步clickhouse
- 博客园首页新随笔联系管理订阅 Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
- 3.QT中QCommandLineParser和QCommandLineOption解析命令行参数
- Java与C#平台通信 WCF CXF SOAP
- SDK,NDK,ADT工具下载常用地址
- ajax webmethod,JQuery直接调用asp.net后台WebMethod方法
- 使用proc文件系统
- Android持久化存储(3)SQLite数据库的使用