在不批量插入数据时,索引是否需要重建?

时间:2011-04-20 14:11:29

标签: mysql indexing rebuild

让我重新解释一下这个问题:

使用单独的INSERT语句插入数据时,下面的SQL文件中的/*! */行是否存在至关重要?

这是现在文件的内容:

LOCK TABLES `adv_links` WRITE;
/*!40000 ALTER TABLE `adv_links` DISABLE KEYS */;
INSERT INTO `adv_links` VALUES (13,'photoreal','http://w.otoreal.tk','',14,'something','something, something',64,0,1,1,'',0,'',1277754393,1277754393,0,0,0,'85.72.100.18',0,0,0,'');
INSERT INTO `adv_links` VALUES (4,'something cirocco', 'ttp://ww.roccoh.t/','',16,'something.','',86,0,1,1,'',0,'achille',1259843781,1259843781,2714,0,0,'91.132.75.249',0,0,0,'');
INSERT INTO `adv_links` VALUES (5,'somethingasco','htp://w.vsco.b/ge/gtpage.asp?i=0','',16,'somethingsco','sco',113,0,1,1,'',0,'achille',1259843935,1259843935,2714,0,0,'91.132.75.249',0,0,0,'');
INSERT INTO `adv_links` VALUES (6,'something','http://w.ja.b/Default.aspx','',16,'somethingaga','',62,0,1,1,'',0,'achille',1259848860,1259848860,2714,0,0,'91.132.75.249',0,0,0,'');
INSERT INTO `adv_links` VALUES (7,'something','htp://w.arkorrier.com.tr/English/AC_urun.asp?ID=ACU36#','',16,'','',90,0,1,1,'',0,'achille',1259848962,1259848962,2714,0,0,'91.132.75.249',0,0,0,'');
-- omitted
/*!40000 ALTER TABLE `adv_links` ENABLE KEYS */;
UNLOCK TABLES;

我问这个是因为当到达/*!40000 ALTER TABLE adv_link ENABLE KEYS */;行时,MySQL会按顺序修复索引并找不到足够的空间,因为数据集大到足以在tmpdir时阻塞排序

1 个答案:

答案 0 :(得分:1)

如果您没有禁用并重新启用密钥,密钥将使用每个INSERT语句动态更新(正常情况下)。

这不需要写入tmpdir,但速度较慢。

如果无法增加MySQL使用的临时空间,可以删除这些行,但会降低导入速度。