Задать вопрос

Как быстро трансформировать данные с таблицы А из 500М+ строк в агрегированную таблицу Б?

В целях оптимизации доступа к определенным запросам было решено создать агрегированную таблицу.
Необходимо разово выполнить перенос данных в агрегированную таблицу с обработкой построчно.
Если писать программу с логикой за пределами СУБД, по-моему, будет работать долго из-за трафика туда-обратно.
Не смог нагуглить подходящего ответа.
Подскажите оптимальный способ.
  • Вопрос задан
  • 78 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 2
AndyKorg
@AndyKorg
Кнопконажиматель и припоерасплавлятель
Если логика агрегирования простая и умещается в один запрос безо всяких курсоров, то лучше сделать sql скриптом SQL в рамках одной транзакции.
Если сложнее и придется использовать курсор, но не больше одного, то так же в sql скрипт. (возможно обложится индексами)
Во всех остальных случаях вынести в приложение с широкими выборками.
Ответ написан
Комментировать
2ord
@2ord Автор вопроса
Сначала написал хранимую процедуру с использованием курсора (за основу взят код отсюда), которая выполняет вставку-обновление (upsert), которая работала быстро. Но затем таки ради большего контроля над работой обновления написал программу. чтобы была возможность прервать процесс в случае перегрузки и продолжить с того же места.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@dimuska139
Backend developer
А если воспользоваться insert-select?
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
500M+ не очень много.
В программе вам кстати не кто не мешает делать широкие выборки, обрабатывать их и вставлять обратно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы