Форум администраторов игровых серверов

Полная версия: MySQL скриптик довести до ума
Вы просматриваете упрощённую версию нашего контента. Просмотр полной версии с полным форматированием.
выставляет уровень доступа перса "-99" у кого атт больше "400"
Собственно подвешивает весь сервер, в оптимизации не силён, будьте добры, ткните носом Smile
Код:
UPDATE
characters, items, item_attributes
SET
characters.accesslevel ='-99'
WHERE
item_attributes.elemValue > 400 AND
item_attributes.itemId=items.object_id AND
characters.charId=items.owner_id
Полумера. Исправляй исходы, что бы больше 400 не ставилось, или затирай вообще такие аугментации.
Может так повеселее будет?
Код:
UPDATE
characters
inner join items on (characters.charId=items.owner_id)
inner join  item_attributes on (item_attributes.itemId=items.object_id)
SET
characters.accesslevel ='-99'
WHERE
item_attributes.elemValue > 400
еще неплохо бы проверить, есть ли индексы на characters.charId, items.owner_id, item_attributes.itemId, items.object_id и если нету, то добавить.
ага а теперь клепай еще пару запрос для у кого больше 3х аттрибутов в шмотке, или больше 1 атрибута в пухе,

Smile
Пока защиту не купил через пакетхат суют атт в левые вещи, пока хочу так реализовать "демотивацию" этого дела...


JOIN в mysql не использовал, подскажите, будьте добры, как встроить тудаitem_attributes.item_id in (14165,...,58) ещё туда, или тупо в конце в условие добавить?Smile

Добавлено через 2 минуты
Хотя ещё лучше - сделать что бы через телнет кикало у кого в определённныйх вещах АТТ - срип раз в минуту будет проверять. Завтра на свежую голову попробую сделать Smile