MooH
Новичок
Какой вариант UPDATE оптимальнее
Нужно обновить несколько записей в таблице. В нужном поле у этих записей поставить одно и тоже значение.
Подскажите, какой вариант более оптимальный с точки зрения нагрузки на сервер.
Таблица имеет индекс по полю key_field
1.
$keys=array(массив значений ключевого поля для замены);
foreach($keys as $value) $where[]='key_field='.$value;
$where_string=implode(' OR ',$where);
$query='UPDATE table SET field1=1 WHERE '.$where_string;
mysql_query($query);
или
2.
$keys=array(массив значений ключевого поля для замены);
foreach($keys as $value)
{
$query='UPDATE table SET field1=1 WHERE key_field='.$value;
mysql_query($query);
}
Что-то мне подсказывает, что второй вариант лучше, потому как в первом варианте, в запросе индекс не будет использован и таблица будет просматриваться целиком, но я не уверен. Или тут еще вариант есть. Не стучите по голове, если туплю совсем.
Нужно обновить несколько записей в таблице. В нужном поле у этих записей поставить одно и тоже значение.
Подскажите, какой вариант более оптимальный с точки зрения нагрузки на сервер.
Таблица имеет индекс по полю key_field
1.
$keys=array(массив значений ключевого поля для замены);
foreach($keys as $value) $where[]='key_field='.$value;
$where_string=implode(' OR ',$where);
$query='UPDATE table SET field1=1 WHERE '.$where_string;
mysql_query($query);
или
2.
$keys=array(массив значений ключевого поля для замены);
foreach($keys as $value)
{
$query='UPDATE table SET field1=1 WHERE key_field='.$value;
mysql_query($query);
}
Что-то мне подсказывает, что второй вариант лучше, потому как в первом варианте, в запросе индекс не будет использован и таблица будет просматриваться целиком, но я не уверен. Или тут еще вариант есть. Не стучите по голове, если туплю совсем.