有一个表 tbl1 的结构如下:

CREATE TABLE `tbl1` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` char(20) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

该表里已经存在了200万条记录.

现在, 需要把 tbl1 中的所有记录全部导到另一个完全相同的表 tbl2 中去.

1. 如果采用以下传统的方式, 则执行时间为: 98.01s

mysql>INSERT INTO tbl2 SELECT * FROM tbl1;
Query OK, 2000000 row affected (1 min 38.01 sec)
Records: 2000000 Duplicates: 0 Warnings: 0

2. 如果是用以下SQL语句, 则执行时间为: 80.85s (36.30 + 44.55)

mysql>ALTER TABLE tbl2 DISABLE KEYS;
Query OK, 0 rows affected (0.00 sec) mysql>INSERT INTO tbl2 SELECT * FROM tbl1;
Query OK, 2000000 row affected (36.30 sec)
Records: 2000000 Duplicates: 0 Warnings: 0 mysql>ALTER TABLE tbl2 ENABLE KEYS;
Query OK, 0 rows affected (44.55 sec)

从上面的测试结果来看, 在大批量导入时先禁用索引, 在完全导入后, 再开启索引, 一次性完成重建索引的效率会相对高很多, 经过反复几次测试, 感觉后者基本能比前者快 1.2 倍左右. 这也就是 LOAD DATAL INFILE 相对较快的原因之一.

mysql的DISABLE/ENABLE KEYS的更多相关文章

  1. REST API disable / enable service auto start by API

    how to disable service auto start by API as the following how to enable service auto start by API as ...

  2. mysql 5.7 enable binlog

    0. precondition a) install mysql 5.7, for  detail please refer my blog post. 1. login mysql and chec ...

  3. How to Disable/Enable IP forwarding in Linux

    This article describes how to Disable or Enable an IP forwarding in Linux. Current IP forwarding sta ...

  4. disable enable 所有其他表关联的外键

    Disable: begin for i in (select constraint_name, table_name from user_constraints where constraint_n ...

  5. MySQL基础之第18章 性能优化

    18.1.优化简介 SHOW STATUS LIKE ‘value’;connections                 连接数uptime                          启动 ...

  6. MySQL学习-常用命令整理

    Eyes are more eloquent than lips. “眉目传情胜于甜言蜜语” 整理了一下自己遇到并且经常用到的MySQL命令,虽然官方文档上有很详细的解释,不过自己还是在这里记录一下, ...

  7. MySQL系列详解二:MySQL语句操作-技术流ken

    简介 本篇博客将详细讲解mysql的一些常用sql语句操作,例如创建数据库,删除数据库,创建表,修改表,删除表,以及简单查询案例. 关于mysql数据中的SQL的大小写问题 1.不区分大小写 1. s ...

  8. MySQL ALTER TABLE语法

    先看一下定义(密密麻麻) ALTER TABLE tbl_name [alter_specification [, alter_specification] ...] [partition_optio ...

  9. 使用mysql以及连接数据库

    MySQL Table of Contents 1. 安装与配置 2. 数据库与账户 3. 用户跟权限 4. 常用命令 5. 表的创建 6. 数据类型 7. 主键约束 8. 表的修改 9. 引擎(En ...

随机推荐

  1. 嵌入式Linux驱动学习之路(十五)按键驱动-定时器防抖

    在之前的定时器驱动程序中,我们发现在连续按下按键的时候,正常情况下应该是一次按下对应一次松开.而程序有时候会显示是两次按下,一次松开.这个问题是因为在按下的时候,因为是机械按键,所以电压信号会产生一定 ...

  2. [No000086]C#foreach集合被改变,报错处理方案

    using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; ...

  3. Java — JTree and JTable以及sqlServer的两种连接

    使用JTree的步骤: 暂时只能创建一个头结点,创建一个树的结点作为头结点(其子结点也是相同的创建方法):DefaultMutableTreeNode headNode = new DefaultMu ...

  4. 文件夹右键添加“DOS”命令

    导入注册表 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Folder\shell\RunCMD] @="进入命令行&quo ...

  5. ASP.NET MVC - 探究应用程序文件夹

    为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序. 第 2 部分:探究应用程序文件夹. MVC 文件夹 一个典型的 ASP.NET MVC Web 应用程序的文件夹内容如下 ...

  6. JS中判断null、undefined与NaN的方法

    写了个 str ="s"++; 然后出现Nan,找了一会. 收集资料如下判断: 1.判断undefined: 代码如下: <span style="font-siz ...

  7. 编写、部署、应用JavaBean

    编写javabean   编写javabean实质上就是编写一个java类.设计javabean类就是要设计这个javabean的属性和方法,类的方法的命名遵循以下规则: 1)如果成员变量的名字是xx ...

  8. 搭建TFS 2015 Build Agent环境(三)

    在配置时,一定要注意下面的几个地方: 1.项目集合生成服务账号 中一定要包含: 2.Build Agent机器上防止Agent的路径一定要短,不要出现特殊字符,比如:C:\Agent 3.一定要安装V ...

  9. ASP.NET SessionState 解惑

    踩坑 近日在对一个ASP.NET WEBFORM项目进行调优过程中,偶然发现页面POSTBACK事件是串行处理的,甚至不同页面的请求都是串行处理的(一个页面加载完毕后,才开始加载第二个页面).但是网站 ...

  10. C 语言学习 第五次作业总结

    第五次作业,主要学习和复习的是几种循环结构的使用. 在前一次的课堂上,同学们已经学习了分支语句的使用.分支语句和循环语句配合使用,就可以写出更多的,逻辑功能丰富的代码了. 逻辑功能的丰富,也意味着学习 ...