







|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
36638
|
|