Как оптимизировать массовое обновление записей в таблице?

Term2

Новичок
Как оптимизировать массовое обновление записей в таблице?

Делаю обновления по такой схеме:

$query = "SELECT * FROM table WHERE условия";
$result = mssql_query($query);
$num = mssql_num_rows($result);
for($i=0; $i<$num;$i++){
//......
$id=mssql_result ($result, $i, 'id');
$queryT = "UPDATE table SET Field='$Field' WHERE id='$id'";
$resultT = mssql_query($queryT);

}

Но оно проходит очень медленно. Даже если выбираю записи за один день. Что можно сделать?
 

hermit_refined

Отшельник
Но оно проходит очень медленно.
что такое "очень медленно"? сколько времени исполняется первый запрос, сколько строк он возвращает, сколько времени выполняются апдейты?..
и... зачем вам это "массовое обновление", что вы делаете?..
 

Term2

Новичок
За полчаса обновилось пара сотен записей. А вообще в таблице более миллиона записей. База SQL Server 2005.
В таблице есть поле, которое раньше не заполнялось. Теперь я написал алгоритм для получения значения этого поля и хочу всю таблицу обновить.
 

hermit_refined

Отшельник
За полчаса обновилось пара сотен записей.
один апдейт за 10 секунд? не верю. индекс-то по id наверняка есть.

но. в любом случае (если нужно переработать всю таблицу) это будет небыстро. я в таких ситуациях поступаю просто - создаю дамп таблицы, на его основе php скриптом - дамп с новыми данными, таблицу прибиваю и пересоздаю с помощью дампа.
можно ещё попробовать создать такую же таблицу, и вставлять в неё измененные данные из первой - с последующим переименованием - это будет работать дольше, чем первый вариант, но проще в реализации.
 

Фанат

oncle terrible
Команда форума
Term2
Чтобы узнать, как можно оптимизировать этот код, надо знать,что он делает.
пора бы уже и освоить эту нехитрую мысль
 
Сверху