2013-08-29 3 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");` 

Это работает довольно медленно. Просто ли копирование его обычным уродливым способом было бы быстрее?

редактировать: если вы хотите обновить несколько строк, вы можете сделать Somthing так:

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

Вы должны поместить нуль в первичном ключе, в противном случае его не работает

+0

Вы проверяли результат 'объяснения' в ваших запросах? Добавьте его в свою публикацию. –

ответ

2

Вы можете, конечно, ускорите это, но общая скорость будет определяться количеством строк в таблице subject - после того, как ваши запросы удвоят свой размер.

В этом примере я предполагаю subject столбцы таблицы является ID, ColA, ColB и ColC, и что ID является Автоинкрементным первичным ключом:

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

Ключа должен указать каждый столбец исключаяID при установке/выборе.

+0

И если мне нужно скопировать несколько строк, это еще быстрее? –

+0

Это будет быстрее, потому что он использует только одну команду вместо четырех. Если в вашей таблице «subject» есть много строк (скажем, тысяч), она будет быстрее, чем вы делаете сейчас, но она все равно будет медленной, потому что копирование тысяч строк требует времени независимо от того, как вы это делаете. –

+0

Im пытается сделать это с «WHERE NotUniqueID = '$ ID», потому что мне нужно скопировать пару строк. любой способ сделать это таким образом? –