Я работаю над веб-приложением Spring, которое использует спящий режим для подключения к базе данных DB2. Я пытаюсь оптимизировать метод обслуживания, который вызывается несколько раз во время вызова службы wed, путем уменьшения количества запросов к БД. эквивалентен / лучше, чем этот запрос
SELECT * FROM TABLE_A a
WHERE a.ID IN
(
SELECT b.FK_ID FROM TABLE_B b
WHERE b.REQUEST_ID = 1234 AND eb.TYPE = 'TYPE_A'
)
OR a.ID IN
(
SELECT c.FK_ID FROM TABLE_C
WHERE ( c.REQUEST_ID = 1234 AND c.TYPE = 'TYPE_A' )
OR
(
c.TYPE = 'TYPE_B' AND c.REQUEST_ID IN
(
SELECT d.ID FROM TABLE_D d
WHERE d.REQUEST_ID = 1234 AND v.TYPE = 'TYPE_A'
)
)
)
или есть лучший вариант?
Кажется, что оба запроса выполняются примерно в одно и то же время (<50 мс), но это может зависеть от полученных данных . Мне нужно было бы протестировать больше, чтобы знать наверняка. </p>
Смысл этих двух запросов состоит в том, чтобы один из них заменил три других запроса, где их результирующие данные обрабатываются в Java для получения требуемых данных.
Мне также нужно будет преобразовать запрос SQL в HQL. Я изо всех сил пытался преобразовать первый запрос.
У меня такое чувство, что я, возможно, зря трачу время, поскольку объекты java для таблиц B и C являются отношениями один-ко-многим в объекте для таблица A, и они все равно загружаются спящим режимом. Это означает, что в долгосрочной перспективе я не буду экономить в любое время. Правильно ли я здесь думаю?
Спасибо!