Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SELECT中的mysql性能问题_Mysql_Performance_Join - Fatal编程技术网

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,我添加了键-这不一样吗?是的,我添加了该表。你也可以尝试两者。