Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Медленное выполнение больших запросов UPDATE (Андрей) 13/01/2010 - 02:22:23



From: Андрей - 13/01/2010 - 02:22:23
Subject:Медленное выполнение больших запросов UPDATE
-----------------
В коде выполняется цикл, который генерирует в базу около 4000 тысяч запросов UPDATE. Выполнение занимает около 0.8 сек.
Было решено это оптимизировать запросами такого вида
UPDATE news SET
title = CASE
WHEN news_id = 1 THEN 'aa'
WHEN news_id = 2 THEN 'bb' END
WHERE news_id IN (1, 2)
После оптимизации в одном запросе обновлялось одновременно 4000 тысячи записей, время работы уменьшилось лишь до 0.6 сек.

Я начал экспериментировать и выяснил что если дробить большой запрос на более мелкие группы то общее быстродействие увеличивается.

Методом тыка определил оптимальной является группа включающая в себя обновление 150 записей.
При таком разбиении все 4000 записей можно обновить уже за 0.08 сек.

Вопрос в том почему это происходит?

Таблицы InnoDB. MySQL 5.0.77 CentOS
Большой запрос занимал 150 КБайт
Самый оптимальный запрос около 5 КБайт


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
36638



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |