+ 0
был хитростью еще во времена оптимизатора на основе правил, что делало невозможным использование индекса для числового столбца. Точно так же они сделали || ''
для буквенно-цифровых столбцов.
По вашему запросу, единственный вывод, который я могу сделать после проверки, состоит в том, что его создатель боролся с производительностью. Если (это мое предположение) индекс CODE_ZIP_CODE_IX является индексом TBL_CODE_ZIP (Код), то запрос не будет использовать его, даже если намекнут на его использование. Создатель, вероятно, не знал, что при использовании LPAD (a.code, 5,0) вместо a.code индекс не может быть использован. Предложение order by берет свой промежуточный набор результатов - который находится в памяти - и сортирует его. Для этого не нужен индекс. Но с + 0
похоже, что он думал отключить его.
Итак, уловки, которые использовались, были неэффективны, и теперь, как вы выяснили, только вводят в заблуждение.
С уважением,
Роб.
PS1: лучше использовать LPAD (TO_CHAR (a.code), 5, '0') или TO_CHAR (a.code, 'fm00009'). Тогда понятно, что вы делаете с типом данных.
PS2. Вашему запросу может быть полезно использовать индекс на основе функций для LPAD (TO_CHAR (a.code), 5, '0') или любое другое выражение, которое вы используете для заполнения своего почтового индекса слева.