У меня следующая проблема: моя таблица достаточно большая (миллионы строк данных), это временные данные, которые я обрабатываю. Мне нужно выбрать максимум и минимум одного столбца в соответствии с некоторыми критериями, обработать эту информацию и удалить данные в соответствии с теми же критериями. На самом деле, самая простая реализация выглядит так:
select max(col), min(col) from _TABLE_ where _CONDITION_;
...
delete from _TABLE_ where _CONDITION_;
таблица большая, и когда я ее обрабатываю, опрашивая таким образом в цикле, это занимает некоторое время. Я думал, что я могу оптимизировать его, используя «возвращение» при удалении, как
delete from _TABLE_ where _CONDITION_ returning max(col), min(col);
это было бы абсолютно то, что мне нужно, но ... это вообще не работает :) говоря, что я не могу использовать агрегатные функции в возвращаемом предложении ...
Есть ли хороший способ улучшить два запроса (выбрав максимум / мин данных и удалив одни и те же данные), сделав вместо этого один запрос? Любой трюк?
заранее благодарю за любую информацию,
Maxym