2011-12-25 11 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分鐘聽起來不太糟糕....