[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оптимизация кода
kuzroman
Подскажите как можно ускорить работу такого скрипта?

$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%' ";

Спустя 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 почитаю, может разберусь.

Спустя 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%' ;


_____________
kuzroman@list.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.