$upd = "SELECT `img` FROM `films` WHERE `img` NOT LIKE '%site.com%' ";
$result = mysql_query($upd) or die("Ошибка: ".mysql_error());
while( $img = mysql_fetch_assoc($result)){
$new_cont = 'http://site.com'.$img['img'];
$sqlIns = "UPDATE `films` SET `img`='$new_cont' WHERE `img`='$img[img]' ";
$result2 = mysql_query($sqlIns) or die("Ошибка: ".mysql_error());
}
В таблице 10000 записей, обновляет долго, есть какой то аналог?
Спустя 8 минут, 12 секунд (5.12.2011 - 22:04) kuzroman написал(а):
Есть ли возможность конкатенировать запись в sql?
что то вроде
UPDATE `films` SET `img`= CONCAT('http://site.com', `img` ) WHERE `img` NOT LIKE '%obnovi.com%' ";
что то вроде
UPDATE `films` SET `img`= CONCAT('http://site.com', `img` ) WHERE `img` NOT LIKE '%obnovi.com%' ";
Спустя 17 секунд (5.12.2011 - 22:05) Placido написал(а):
Вместо апдейта в цикле лучше сначала в цикле сформировать запрос, а потом одним запросом обновить таблицу. А еще поставить индекс на поле `img`, и хотя в случае с SELECT он не поможет (т.к. в условии % с обеих сторон), но UPDATE будет выполняться быстрее.
Спустя 5 минут, 47 секунд (5.12.2011 - 22:11) Placido написал(а):
Цитата (kuzroman @ 5.12.2011 - 21:04) |
Есть ли возможность конкатенировать запись в sql? что то вроде UPDATE `films` SET `img`= CONCAT('http://site.com', `img` ) WHERE `img` NOT LIKE '%obnovi.com%' "; |
Можно.
Спустя 6 минут, 26 секунд (5.12.2011 - 22:17) kuzroman написал(а):
я думал об этом, но в идеале хотелось бы записать на чистом sql без php.
ща про ПОДГОТОВЛЕННЫЕ ЗАПРОСЫ mysql почитаю, может разберусь.
ща про ПОДГОТОВЛЕННЫЕ ЗАПРОСЫ mysql почитаю, может разберусь.
Спустя 43 минуты, 28 секунд (5.12.2011 - 23:00) kuzroman написал(а):
сделал подготовленным запросом:
Но все равно ужасно долго)) И кто ж мне говорил что они реально быстрее работают?
mysql_query("PREPARE myinsert FROM 'UPDATE `films` SET `img`= ? WHERE `id`= ? ' ");
while( $img = mysql_fetch_assoc($result)){
$new_cont = 'http://site.com'.$img['img'];
$id = $img['id'];
mysql_query("SET @img= '$new_cont' ");
mysql_query("SET @id= '$id' ");
mysql_query("EXECUTE myinsert USING @img, @id");
}
Но все равно ужасно долго)) И кто ж мне говорил что они реально быстрее работают?
Спустя 12 часов, 7 минут, 21 секунда (6.12.2011 - 11:08) alexbel2404 написал(а):
про хранимые процедуры почитай)
Спустя 2 часа, 47 минут, 6 секунд (6.12.2011 - 13:55) kuzroman написал(а):
Цитата (alexbel2404 @ 6.12.2011 - 08:08) |
про хранимые процедуры почитай) |
Спасибо, почитаю)
Спустя 2 часа, 22 минуты, 46 секунд (6.12.2011 - 16:18) kuzroman написал(а):
вот что получилось, и что требовалось
UPDATE `films`
SET `img`= CONCAT('http://site.com', `img` )
WHERE `img` NOT LIKE '%site.com%' ;
UPDATE `films`
SET `img`= CONCAT('http://site.com', `img` )
WHERE `img` NOT LIKE '%site.com%' ;
_____________
kuzroman@list.ru