SELECT中的mysql性能问题
我有这些桌子:SELECT中的mysql性能问题,mysql,performance,join,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, `IdToN
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名字的钥匙。对于2800000行,此查询大约需要7分钟。有人知道我可以如何提高这方面的性能吗?唯一明显的原因是缺少propper索引
请将表IdToName中的Id索引为唯一,并将表RawData中的两列索引为唯一。仅检查查询时间。我强烈怀疑您真正遇到的是“插入中的MySQL性能问题”,而不是“选择中的MySQL性能问题”。每秒7000次插入相当多,这可能是您机器的物理限制
嗯,顺便说一句[编辑]:我们不知道您的表(和内存)的确切形状和内容,但我认为在您的情况下,任何索引都帮不上忙。您的列上有索引吗?请包括所选表的执行计划。。。join
示例SELECT L.ID,P.ID的输出是什么?我不知道执行计划是什么:(我使用ALTER TABLE ADD KEY添加了键,它们与用于此目的的索引不一样吗?你是指数据还是RawData?据我所知,在插入之前添加索引会减慢速度..至于RawData,我添加了键-这不一样吗?是的,我添加了该表。你也可以尝试两者。