Иногда план объяснения показывает, сколько пространства TEMP оценивается для использования, но, по моему опыту, эти оценки иногда во много раз превышают используемые. И есть много факторов, которые будут влиять на то, сколько места потребуется от одного выполнения к другому. Но вы можете сделать EXPLAIN PLAN
для ваших различных изменений и искать результат с небольшим пространством TEMP или без него. Просто имейте в виду, что даже если в выходных данных плана не указано, что он будет использовать пространство TEMP, это может произойти при фактическом вызове.
Вы можете использовать пакет dbms_xplan для запроса используемой памяти, если у вас есть параметр базы данных pga_aggregate_target
установите ненулевое значение:
select * from table(
dbms_xplan.display_cursor(sql_id=>'dwgxfu778vgn8',
format=>'allstats, memstats'));
Лучше всего искать возможные способы исключить использование TEMP, например, не указывать ORDER BY
, если это возможно. Кроме того, ha sh -соединения могут использовать много памяти.