2011-12-25 12 views
2

我在MySQL平台上运行以下SQL查询。SQL查询性能对MySQL来说太差

表A是具有单列(主键)和25K行的表格。 表B有几列和75K行。

执行以下查询需要20分钟。如果你能帮忙,我会很高兴。

INSERT INTO sometable 
SELECT A.PrimaryKeyColumn as keyword, 'SomeText', B.* 
FROM A, B 
WHERE B.PrimaryKeyColumn = CONCAT(A.PrimaryKeyColumn, B.NotUniqueButIndexedColumn); 
+0

我认为Concat()函数删除索引的好处 – Simon 2011-12-25 13:16:12

回答

5

运行SELECT没有INSERT,看看问题是否与SELECT与否。

如果是SELECT,请按照the MySQL documentation explaining how to optimize queries using EXPLAIN

如果SELECT运行正常,但INSERT需要永久使用,请确保您在sometable上没有太多不必要的索引。除此之外,您可能需要通过INSERT进行一些MySQL调优和/或操作系统调优(例如,内存或磁盘性能)以获得可衡量的性能提升。

0

如果我理解正确,您大致尝试插入1875亿条记录 - (与where子句不匹配)。

对于这20分钟听起来不太糟糕....