我应该在mysql中为大型插入操作创建索引吗?

时间:2015-03-16 19:52:39

标签: mysql

假设我有下表有80亿列:     主题文本,谓词文本,对象文本 现在我想创建另一个表来计算不同的文本值,如下所示:

CREATE TABLE Nodes (id BIGINT UNSIGNED PRIMARY KEY AUTO INCREMENT, val TEXT,     count BIGINT UNSIGNED);
INSERT INTO Nodes(val,count)
SELECT Subject, COUNT(*) as count FROM Triples GROUP BY Subject

主题谓词和对象的索引会增加还是降低插入的速度?

3 个答案:

答案 0 :(得分:2)

非常一般的经验法则:索引通常降低写入速度,而提高读取速度。

答案 1 :(得分:0)

它会降低速度,因为每个插入表都会被重新编入索引,而索引的行数也会增加...通常如果我要插入大量记录,我会掉线插入运行之前的所有索引,然后在结束时重新创建它们......

答案 2 :(得分:0)

但是没有要写的索引。 澄清一下:我在考虑添加这样的索引: ALTER TABLE Triples ADD INDEX (Subject(767)), ADD INDEX (Predicate(767)), ADD INDEX (Object(767)) 这样INSERT语句的读操作就会更快(GROUP BY等)。

问题是,如果计算索引是值得的,而不是在INSERT操作中允许全文匹配。