2016-08-04 68 views
0

我有表下面的模式:http://i.imgur.com/jn2nrFT.pngMySQL表插入性能

它的MySQL,在InnoDB上運行,基本數字海洋主機(512 MB,1個CPU)上。我使用PHP /學說,並在我的代碼,我這樣做

for($i = 0; $i < 5000; ++$i) { 
    $row = findRowInTable(); 
    if (! $row) { 
     insertNewRow(); 
    } 
} 
$em->flush(); 

它是緩慢的,它需要像20多歲,當桌子是空的,50多歲的時候表有5000行。

我該如何優化它?我將最多添加5K行,但我需要在120秒內完成此過程,即使表將長200K行

+2

如果你想表演,不要使用原則。 –

+0

你將需要一艘更大的船。 –

+1

並獲得更多內存。另一個cpu也很好。另外,我們不知道你是不是在同一個循環中打開/關閉數據庫連接和/或在那裏查詢數據庫相關的東西。 –

回答

0

您可以嘗試查找不在數據庫中的行,在循環外嘗試用單個查詢查找行,然後讓php迭代。

$rowsARR = findRowsNotInTable(); 
for($i = 0; $i < sizeof($rowsARR); ++$i) { 
     insertTheRow($rowsARR[i]); 
} 
$em->flush();