Отчёт строился больше 18 секунд, и пользователи считали, что он завис. Причина оказалась не в объёме данных: миллион строк обрабатывался по одной в цикле. Переписал на обработку колонки целиком — тот же результат, те же итоговые суммы, замер на тех же данных. Стало 0,009 секунды. Это не оптимизация «на глаз»: до и после я меряю одним и тем же прогоном и показываю обе цифры.