我有这些表:
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分钟。有谁知道我如何才能提高性能呢?
答案 0 :(得分:0)
唯一明显的原因是缺乏适当的指数。
请将表IdToName中的Id索引为UNIQUE,将表RawData中的两列都索引到INDEX。
答案 1 :(得分:0)
单独检查查询的时间。我强烈怀疑你所拥有的是“INSERT中的MySQL性能问题”,而不是“在SELECT中”。每秒7000次插入非常多,可能是您机器的物理限制。
嗯,顺便说一句[编辑]:我们不知道你的表(和内存)的确切形状和内容,但我不认为在你的情况下任何索引都可以帮助。