SELECT中的mysql性能问题

时间:2011-09-05 15:41:13

标签: mysql performance join

我有这些表:

IdToName: 

Id   Name 
1    A 
2    B 

RawData:

Son  Father 
B    A

我想创建一个名为Data的新表,其中我将使用Id,即:

Data: 
Son    Father 
2      1 

我使用此查询执行此操作:

INSERT INTO `Data`
    SELECT L.`ID`, P.`ID`
    FROM   `IdToName` L,
           `IdToName` P,
           `RawData` T
    WHERE T.Father = P.Name
    AND   T.Son = L.Name

我在RawData的儿子和父亲以及IdToName的名字上有钥匙。对于2,800,000行,此查询大约需要7分钟。有谁知道我如何才能提高性能呢?

2 个答案:

答案 0 :(得分:0)

唯一明显的原因是缺乏适当的指数。

请将表IdToName中的Id索引为UNIQUE,将表RawData中的两列都索引到INDEX。

答案 1 :(得分:0)

单独检查查询的时间。我强烈怀疑你所拥有的是“INSERT中的MySQL性能问题”,而不是“在SELECT中”。每秒7000次插入非常多,可能是您机器的物理限制。

嗯,顺便说一句[编辑]:我们不知道你的表(和内存)的确切形状和内容,但我不认为在你的情况下任何索引都可以帮助。