Пакетная выборка Eclipselink VS объединенная выборка - PullRequest
0 голосов
/ 27 мая 2020

Когда мне следует использовать «eclipselink.join-fetch», когда я должен использовать «eclipselink.batch» (batch type = IN)?

Существуют ли какие-либо ограничения для объединенной выборки, такие как количество таблицы выбираются?

1 Ответ

0 голосов
/ 27 мая 2020

Ответ всегда указывается c на ваш запрос, конкретный c вариант использования и базу данных, поэтому нет жесткого правила, когда использовать одно перед другим, или использовать ли одно из них вообще. Вы не можете определить, что использовать, если не серьезно относитесь к производительности и не хотите протестировать и то, и другое в условиях производственной нагрузки - точно так же, как и при любой настройке производительности запроса. вернулся в один запрос. Если ваша цель - уменьшить количество SQL утверждений, это идеально. Но за это приходится платить, поскольку внутренние / внешние соединения, декартовы соединения et c могут увеличить объем передаваемых данных и работу, которую должна выполнять база данных.

Пакетная выборка - это один дополнительный запрос (1 + 1), и его можно выполнить несколькими способами. IN собирает все значения внешнего ключа и помещает их в один оператор (больше, если у вас> 1000 на oracle). Соединение аналогично соединению выборкой, поскольку оно использует критерии из исходного запроса для выбора отношения, но не возвращает столько данных, сколько извлекает только необходимые строки. EXISTS очень похож на использование подзапроса для фильтрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...