【发布时间】:2017-12-02 04:30:33
【问题描述】:
我正在使用 MySQL v5.6。
我在一个新创建的表 (InnoDB) 中插入了大约 1000 万行。我尝试在“Load Data InFile”和多次插入之间选择最佳方式。
Load Data InFile 应该(并且现在)更有效,但我发现一个奇怪的事情:使用“load data infile”时索引创建时间更长(增加了 15%)...
观察的步骤(每一步都在前一步完成后开始):
- 我创建了一个新表 (table_1)
- 我创建了一个新表 (table_2)
- 我在 table_1 中插入了 1000 万行,并进行了多次插入(5000 批)
- 我在 table_2 中插入 1000 万行并在文件中加载数据
- 我在 table_1 上一次创建 4 个索引(使用 alter Table)
- 我在 table_2 上一次创建 4 个索引(使用 alter Table) -> 比上一步长约 15%
这能解释什么?
(当然,按照2、1、4、3、6、5的顺序,结果是一样的。)
【问题讨论】:
-
好。您通过更改步骤顺序等消除了几个变量。更多问题:记录的顺序是否相同?
PRIMARY KEY是否已经建立?AUTO_INCREMENT还是自然的?如果是自然的,记录是否按此顺序排列?一个带有 4 个 ADD INDEX 子句的 ALTER?
标签: mysql indexing bulkinsert