最近发现了一个 Mysql 快速导入数据方法load data infile
。
下面用几条命令来给大家看看,效率结果。
简单说下:
准备数据
1.txt
,开始只有 10 万数据,后来用 vim 添加到了 2000 万行,用 Windows 下的编辑器直接卡机的,Windows 下安装 Gvim 可以的。数据表类型 Innodb,没做任何的索引优化。
插入
1.导入 10 万行记录不到 1 秒
mysql> load data infile './1.txt' into table article (keywords);
Query OK, 107200 rows affected (0.96 sec)
Records: 107200 Deleted: 0 Skipped: 0 Warnings: 0
复制代码
插入 10w 数据,耗时 0.96 sec
2.导入 2000 万行的数据量
mysql> load data infile './1.txt' into table article (
Query OK, 20000000 rows affected (5 min 53.02 sec)
Records: 20000000 Deleted: 0 Skipped: 0 Warnings: 0
复制代码
插入 2000w 数据,耗时 5 min 53.02 sec
使用 count 统计
1.在 9000 万中统计数据(count)
mysql> select count(id) from article ;
+-----------+
| count(id) |
+-----------+
| 92893775 |
+-----------+
1 row in set (1 min 28.86 sec)
复制代码
耗时 1 min 28.86 sec
2.查询 1 亿 1 千万的数据,比上一个明显的时间多了
mysql> select count(id) from article ;
+-----------+
| count(id) |
+-----------+
| 112893775 |
+-----------+
1 row in set (5 min 18.83 sec)
复制代码
耗时:5 min 18.83 sec
3.用 count(*)时间减少了 25 秒左右
mysql> select count(*) from article ;
+-----------+
| count(*) |
+-----------+
| 112893775 |
+-----------+
1 row in set (4 min 5.53 sec)
复制代码
耗时:4 min 5.53 sec
4.用 count(1)直接节省 1 分 40 秒
mysql> select count(1) from article ;
+-----------+
| count(1) |
+-----------+
| 112893775 |
+-----------+
1 row in set (3 min 36.59 sec)
复制代码
耗时:3 min 36.59 sec
5.MYISAM 引擎
mysql> select count(1) from test;
+-----------+
| count(1) |
+-----------+
| 326039962 |
+-----------+
1 row in set (0.08 sec)
复制代码
耗时:0.08 sec
评论