Есть еще одно ограничение.Значения в предложении IN
передаются как отдельные параметры.Есть предел параметров.Вероятно, это то же самое, что и для хранимых процедур , что составляет 2100.
У меня похожая ситуация, когда я пропускаю большое количество гидов.Я разделил его на несколько запросов, каждый из которых получил до 1000 параметров.Запросы выполняются как многокритериальные в пакете, поэтому существует только один прием в оба конца базы данных.
При использовании IN
производительность может снизиться по сравнению с объединениями.В моем случае у меня нет проблем с производительностью из-за этого.Если у вас не так много параметров, это, скорее всего, не будет проблемой для вас.
Кстати, получение объектов по id также может быть реализовано:
Get<Entit>(id)
, который требует одного запроса, но только когда объект еще не находится в кэше. Load<Entity>(id)
, который создает прокси, если объект не находится в кэше и загружается только впри доступе к свойствам.Скорее всего, мы получаем размер пакета и загружаем несколько экземпляров одновременно (предварительная выборка).
К сожалению, нет будущего - get .