Комментарии 6
Только надо учитывать, что максимальный размер SQL-запроса в PostgreSQL - 1 гигабайт, и если предположить, что один e-mail адрес занимает 255 символов (255 байт), то ваш максимум примерно 4 млн с копейками
Лето же уже, или долги сдаёте?
Статья интересная, проблема актуальная, хотелось бы еще увидеть тест для запроса вида
List<Account> findByEmailIn(List<String> emails);
за исключением попадания в выборку готовых объектов Account запрос будет идентичным, считаю, нужно использовать инструмент на максимум
О, господи, сколько всего собрано в одном месте! Я попробую самые крупные огрехи хотя бы указать:
Банальный вывод статьи. Делать много запросов дороже, чем один - это очень важное сообщение от КО.
Использовать System.out.println, когда уже есть логгер (
@Slf4j
висит над классом).Логирование 10к запросов в консоль, к слову, тоже влияет на результат ;)
Сразу же в application.yaml отключит OSiV.
На сущности висит Data, читать классическую статью https://thorben-janssen.com/lombok-hibernate-how-to-avoid-common-pitfalls/.
Можно побенчмаркать хотя бы JMeter-ом.
"Ребят, ревьюю ваш код, у вас тут поиск по email, а на нём индекса нет..."
Похвалить автора, конечно, тоже есть за что, например, что юзает StopWatch, а не сам мерит nanoTime., докер использует. В каждом ревью должно быть что-то позитивное =)
Это же элементарно, Ватсон! Неужели есть ещё разработчики, которые так делают?
Автор бы еще написал статью, что join в SQL делать быстрее, чем руками два вложенных цикла по двум таблицам. Мдааа...
Spring Data JPA: замена нескольких запросов одним и почему это очень важно