Загрузка всего объекта в единую статическую структуру данных только для чтения (поскольку она неизменна, означает, что после ее создания ее можно безопасно использовать из многих потоков), можно получить наибольшую общую производительность за поиск.
Однако это будетпривести к длительному времени запуска, что может быть неприемлемо.В этом случае вы можете рассмотреть возможность загрузки каждого элемента как доступного, но это вызывает проблемы параллелизма (поскольку вы изменяете структуру данных, используемую несколькими потоками).
Между ними есть возможность загрузки всех индексов при запуске.вверх, а затем добавьте остальную информацию для каждого доступа с более мелкими блокировками, чтобы уменьшить конфликт блокировок.
Или вы можете игнорировать партию и просто загружать из базы данных по мере необходимости.Это имеет некоторые преимущества с точки зрения производительности только потому, что память не используется для редко используемой информации.Будет намного проще, если вы когда-нибудь вдруг обнаружите, что вам нужно разрешить изменение данных.
Никто не может быть единственным разумным способом пойти в общем, это будет зависеть от спецификиприложения, данных и моделей использования.