У нас есть веб-приложение, в котором пользователи выполняют специальные запросы на основе введенных параметров. Я мог бы также упомянуть, что время отклика имеет большое значение для пользователей.
Веб-страница динамически создает SQL для выполнения на основе введенных параметров. Например, если пользователь вводит «1» для «Бизнес-единицы», мы создаем SQL-код следующим образом:
SELECT * FROM FACT WHERE
BUSINESS_UNIT = '1'
--AND other criteria based on the input params
Я обнаружил, что там, где пользователь не указывает BUSINESS_UNIT, создается следующий запрос
SELECT * FROM FACT WHERE
BUSINESS_UNIT LIKE '%'
--AND other criteria based on the input params
ИМХО, это излишне (если не грубо) неэффективно и гарантирует отправку кода, плохого для модификации, но, поскольку у меня гораздо более высокая скорость отправки кода для доработки, чем у других, я считаю, что могу заработать репутацию "слишком требователен".
Если это неуместный вопрос, потому что это не прямой код Q, дайте мне знать, и я немедленно удалю его. Меня очень смущает, разрешены ли такие субъективные вопросы или нет! Я буду следить за вашими ответами.
ти
Обновление:
Я использую базу данных Oracle.
У меня сложилось впечатление, что Oracle не оптимизирует "LIKE '%'", удаляя условие и оставляя его менее эффективным. Может ли кто-нибудь подтвердить?