SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.06.2007 15:24:28

Serge
Участник
Зарегистрирован: 21.06.2007
Сообщений: 3

Использование LIMIT совместно с UPDATE

Как это работает?

update table set value1=1 where value2=0 LIMIT nnn;

Что в данном случае делает LIMIT?

Суть проблемы в следующем. Имеется таблица с большим объемом данных, обновление идёт в реалтайме. Хотелось бы сократить время выполнения апдейта. У меня сложилось впечатление, что LIMIT в данном случае указывает не на количество обновляемых записей, а на первые nnn из таблицы.

Как заставить mysql обновлять только заданное количество записей? Заранее спасибо.

Отредактированно Serge (21.06.2007 15:24:58)

Неактивен

 

#2 21.06.2007 16:03:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Использование LIMIT совместно с UPDATE

Нет, он влияет именно на количество измененных строк.
Другое дело, что осмысленности такой запрос несет не много,
т.к. он обновит произвольные nnn строк, подпадающих
под WHERE. Обычно используют UPDATE + ORDER BY + LIMIT.

Неактивен

 

#3 21.06.2007 16:43:36

Serge
Участник
Зарегистрирован: 21.06.2007
Сообщений: 3

Re: Использование LIMIT совместно с UPDATE

Спасибо.

Всё дело в том, что время выполнения UPDATE в моём случае никак не зависит от количества изменяемых записей, а только от размера таблицы. Собственно, поэтому и возникла идея ограничить количество обновляемых записей.

При добавлении LIMIT обновление вообще не происходит. По крайней мере, такое создается впечатление. Тип таблицы - MyISAM, порядка 6 индексов, в том числе и по полям, по которым идет обновление.

Неактивен

 

#4 21.06.2007 17:17:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Использование LIMIT совместно с UPDATE

Сделайте SELECT COUNT(*) FROM table WHERE value1=1 до и после
обновления, чтобы убедиться, что все работает.

Наличие индекса никак не сказывается на том, как работает LIMIT.
Но оно сказывается на ORDER BY.

Неактивен

 

#5 21.06.2007 17:51:32

Serge
Участник
Зарегистрирован: 21.06.2007
Сообщений: 3

Re: Использование LIMIT совместно с UPDATE

Еще раз спасибо.

Неактивен

 

#6 21.06.2007 18:51:18

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Использование LIMIT совместно с UPDATE

Чтобы оптимизировать скорость выполнения, посмотрите сколько выполняется

Код:

select from table where value2=0;

а также стоит посмотреть используются ли ключи при этом

Код:

explain select from table where value2=0;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson