Если у вас есть индекс на (id,amt)
, вы бы минимизировали работу в группе с помощью процесса / суммирования (так как он мог бы прочитать индекс).Если оба столбца обнуляются, вам может понадобиться добавить «где id не нуль», поэтому он будет использовать индекс.[Это подразумевается в последующем объединении id
, но оптимизатор может не вывести его.]
Следующим шагом будет использование материализованного представления для суммирования, возможно, с индексом (amt,id)
(который он мог бы использовать, чтобы избежать сортировки).Но это обновляется либо при фиксации, либо по запросу, либо через запланированные интервалы.Это не поможет, если вам нужно выполнить этот запрос как часть транзакции.
И индекс, и материализованное представление добавят работу для вставок / обновлений / удалений в таблицу, но сохранят работу в этом запросе.