Задавайте вопросы, мы ответим
Вы не зашли.
Как это работает?
update table set value1=1 where value2=0 LIMIT nnn;
Что в данном случае делает LIMIT?
Суть проблемы в следующем. Имеется таблица с большим объемом данных, обновление идёт в реалтайме. Хотелось бы сократить время выполнения апдейта. У меня сложилось впечатление, что LIMIT в данном случае указывает не на количество обновляемых записей, а на первые nnn из таблицы.
Как заставить mysql обновлять только заданное количество записей? Заранее спасибо.
Отредактированно Serge (21.06.2007 15:24:58)
Неактивен
Нет, он влияет именно на количество измененных строк.
Другое дело, что осмысленности такой запрос несет не много,
т.к. он обновит произвольные nnn строк, подпадающих
под WHERE. Обычно используют UPDATE + ORDER BY + LIMIT.
Неактивен
Спасибо.
Всё дело в том, что время выполнения UPDATE в моём случае никак не зависит от количества изменяемых записей, а только от размера таблицы. Собственно, поэтому и возникла идея ограничить количество обновляемых записей.
При добавлении LIMIT обновление вообще не происходит. По крайней мере, такое создается впечатление. Тип таблицы - MyISAM, порядка 6 индексов, в том числе и по полям, по которым идет обновление.
Неактивен
Сделайте SELECT COUNT(*) FROM table WHERE value1=1 до и после
обновления, чтобы убедиться, что все работает.
Наличие индекса никак не сказывается на том, как работает LIMIT.
Но оно сказывается на ORDER BY.
Неактивен
Еще раз спасибо.
Неактивен
Чтобы оптимизировать скорость выполнения, посмотрите сколько выполняется
select from table where value2=0;
а также стоит посмотреть используются ли ключи при этом
explain select from table where value2=0;
Неактивен