При смене параметра optimizer_features_enable
с 9.2.0.8
на 11.2.0.3
, очевидно, могут сильно измениться планы запросов и их стоимость с точки зрения оптимизатора. Но есть и неочевидные следствия изменения поведения оптимизатора, об одном из которых и будет эта статья.
Начиная с версии Oracle 10g в запросах с группировкой вместо операции SORT GROUP BY
при операциях сортировки может использоваться новый внутренний алгоритм сортировки, HASH GROUP BY
. В общем случае (если не используется специфический хинт /*+ no_use_hash_aggregation */
), предсказать, какой именно алгоритм выберет оптимизатор, нельзя. Для нас важно то, что в случае использования HASH GROUP BY
поменяется порядок возвращаемых строк, т.е. результат будет неотсортированным!
Рассмотрим небольшой пример: Continue reading »