![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
lonli |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2007 Где: Москва Репутация: нет Всего: нет |
В базе есть 2 таблицы aa (25к строк) и bb (15к строк)
Запрос
У меня нехорошее ощущение, что оптимизировать его нельзя, но вдруг... База работает для сайта на PHP, может имеет смысл перенести обработку туда, а там вставить прерывания, или ещё как поколдовать. Врамя работы возрастёт в десятки раз, но хотябы проц будет относительно свободен. Планирую переносить сайт на частный хостинг, не пошлют ли меня там с такой нагрузкой? |
|||
|
||||
skyboy |
|
||||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
предлагаю сделать в три этапа:
1. создать temporary table с двумя полями: idB и SUM_OF_F. Индекс по idB
Если операция разовая - можно и temporary таблицу создать. 2. выполнить
забив во временную таблицу готовые уже пары IDB + sum(f) 3. провести обноывления на основе временной таблицы:
впрочем, это для того случая, если тормоза по причине подзапроса с группировкой. т.е. если причина - в пересчете одних и тех же значений длоя разных строк. если проблема в индексе в таблице `bb` на поле `f`, то тут никак не помочь(разве что попробовать перед вставкой удалить индекс, а после вставки - восстановить: по времени будет, пожалуй, дольше, но нагрузку можно будет разделить на два разных действия и разнести во времени: сначала только вставка и много позже - переиндексация) Добавлено через 1 минуту и 5 секунд лучше бы указал, в каких отношениях `aa` и `bb` по `aa`.`idB` = `bb`.`id`: "многие-ко-одному" или "один-к-одному" Добавлено через 1 минуту и 36 секунд возможно, стОит задуматься о переработке структуры базы. |
||||||
|
|||||||
lonli |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2007 Где: Москва Репутация: нет Всего: нет |
![]() Меньше секунды занимает. Спасибо. Один-ко-многим. Я думал это понятно было. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
почему же? вполне могла быть необязательная связь "один-к-одному" и суммированием человек мог проверять наличие или отсутствие связи ![]() ![]() рад. учитывая мое незнание структуры, практически наугад стрелял. и попал ![]() Добавлено через 46 секунд если вопрос решен, пожалуйста, пометь его решенным(в правом верхнем углу над первым твоим постом в теме ссылка есть) |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |