Медленная производительность запросов при использовании JPQL и Spring с дополнительными параметрами.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Медленная производительность запросов при использовании JPQL и Spring с дополнительными параметрами.

Сообщение Anonymous »

Я столкнулся с очень странной проблемой (ИМО). Я занимаюсь разработкой проекта, в котором используются очень старые (и совсем не оптимизированные) таблицы, и мы использовали Spring с Hibernate для выполнения тяжелой работы по запросам к BBDD, но при доступе к одной из них мы зашли в тупик. из наших самых тяжелых таблиц (набор отношений между другими таблицами и т. д.), поскольку SQL-код, который пытался сгенерировать Spring, был очень большим и совсем не быстрым.
ТАК! Я начал использовать JPQL, чтобы по-прежнему использовать некоторые возможности, предоставляемые инфраструктурой, и с помощью некоторых сообщений здесь и там я нашел это решение для необязательных параметров:

Код: Выделить всё

@Query("SELECT e FROM Example e LEFT JOIN e.houses ho " +
"WHERE " +
"(:someValue1 IS NULL OR e.someValue1 = someValue1) AND " +
"(:someValue2 IS NULL OR e.someValue2 = someValue2) AND " +
"(:someValue3 IS NULL OR e.someValue3 = someValue3)")
Конечно, доступ к НАМНОГО большему количеству свойств и с кучей специфических фильтров, но дело не в этом, это была просто прославленная длинная версия примера. Поэтому, когда я использовал этот запрос, независимо от количества параметров, которые я активировал (или нет), если я возьму SQL, сгенерированный из Hibernate, и запущу его на нашем BD, запросы будут отвечать очень быстро (нужно!), НО всякий раз, когда я пытаюсь использовать запрос из моего приложения выполняется медленно, но ДЕЙСТВИТЕЛЬНО МЕДЛЕННО. Мы говорим от ~1 секунды до 14+ секунд.
Я уже понял, что это ошибка предложения OR (после множества тестов и перехода вперед и назад), потому что, если я удалю их и просто начните передавать параметры, которые будут использоваться, он снова начнет работать быстро.
Может ли кто-нибудь дать мне объяснение? Я просто хочу это понять.
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/791 ... parameters
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»