Задавайте вопросы, мы ответим
Вы не зашли.
Можно ли как-то упростить данный запрос, но сохранить последовательную структуру (по id):
Неактивен
Три запроса при наличии индекса на id будут работать быстрее.
Неактивен
Я читал что mysql очень хорошо оптимизирует запросы, и по логике должен сгруппировать по `id`, и еще читал что один update, в случае использования динамических строк, выполняется намного быстрее, т.к. mysql сразу выделяет память под все строки. А в случае поочередных запросов - каждый раз будет происходить выделение памяти и сдвиг уже существующих строк, чтобы освободить место для новой.
Можно ли это всё как-то проверить средствами mysql?
Неактивен
Такие операции как у вас MySQL не сможет оптимизировать, так как они не типовые. CASE потребует сделать полный скан таблицы. Скорость можно проверить на тестовом приложении - выполните требуемую операцию много раз на достаточно большой таблице.
Неактивен
Понятно, т.е. индексы просто не будут использоваться.
Тогда еще три вопроса:
1) Будет ли MySQL в случае объединения update запросов в один перераспределять память для всех апдейтов сразу, или будет для каждого в отдельности? Мне нужно сократить число записей на SSD.
2) Выходит партицирование в таком объединенном запросе тоже работать не будет, будут перебираться все партиции?
3) WHERE id IN (...) задействует индексы? Или всеравно будет перебираться вся база?
Отредактированно kacergei (05.09.2012 16:10:23)
Неактивен
1) скорее всего в этом случае будет общая запись на диск, но все зависит от того в одном и том же или в разных секторах данные и от механизма хранения - для минимизации записи вам больше подойдет MyISAM
2) партиционирование работает только в части операций, в которых работают индексы. Если индексы не работают, о партиционировании думать не стоит.
3) да, использует индексы
Неактивен
Спасибо
Еще такой вопрос, может быть есть какие-то альтернативы MySQL, которые будут отрабатывать в данной задаче оптимально, т.е. и индексы использовать и распределять память под все вставки разом, или поддерживающие множество SET в UPDATE? Я читал есть много форков, может в каком-то что-то такое есть, вы не знаете?
Отредактированно kacergei (06.09.2012 17:24:51)
Неактивен