2013-08-29 71 views
0

我必須在加載頁面之前複製一些mysql行。我試圖將它複製到臨時表中,如下所示:什麼是複製mysql行的最快方法?

mysqli_query($con,"CREATE TEMPORARY TABLE tmp_tbl SELECT * FROM subject WHERE ID='$ID'"); 
mysqli_query($con,"UPDATE tmp_tbl SET ID=NULL"); 
mysqli_query($con,"INSERT INTO subject SELECT * FROM tmp_tbl"); 
mysqli_query($con,"DROP TABLE tmp_tbl");` 

它工作得很慢。只是以普通的醜陋方式複製它會更快嗎?

編輯:當您要更新多行,你可以做財產以後這樣的:

mysqli_query($con,"INSERT INTO subject (Primary,AnotherID, COLB, COLC) 
SELECT NULL,'$a', COLB, COLC 
FROM subject WHERE AnotherID='$someID'"); 

你必須把一個空的主鍵,否則其不工作

+0

您是否在查詢中檢查了'explain'的結果?將其添加到您的發佈。 –

回答

2

你當然可以加快速度,但整體速度將由subject表格中的行數決定 - 在所有查詢的大小加倍後。

在這個例子中,我假設subject表列IDColAColBColC,那ID是一個自動遞增的主鍵:

INSERT INTO subject (ColA, ColB, ColC) 
SELECT ColA, ColB, ColC 
FROM subject 

,關鍵是要指定每列,除了插入/選擇時的ID

+0

如果我需要複製多行,它還是更快? –

+0

它會更快,因爲它只使用一個命令而不是四個。如果你的'subject'表有很多行(比如說數千行),它會比現在做的更快,但它仍然很慢,因爲無論你如何做,拷貝數千行都需要時間。 –

+0

我試圖做到這一點與「WHERE NotUniqueID ='$ ID'」,因爲我必須複製幾行。任何方式這樣做? –

相關問題