Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →
Эффективное использование Query Builder
Избегание проблемы N+1 запросов
Проблема N+1 запросов возникает, когда система выполняет слишком много подзапросов для каждой извлекаемой строки данных.
Чтобы этого избежать, используйте leftJoinAndSelect или innerJoinAndSelect для объединения таблиц в одном запросе вместо выполнения множественных запросов.
const users = await dataSource
.getRepository(User)
.createQueryBuilder("user")
.leftJoinAndSelect("user.posts", "post")
.getMany()
В этом случае leftJoinAndSelect позволяет получить все посты пользователя в одном запросе вместо множества мелких запросов.
Используйте getRawMany() при необходимости сырых данных
Когда полные объекты не требуются, используйте getRawMany() для получения сырых данных, чтобы избежать избыточной обработки информации в TypeORM.
const rawPosts = await dataSource
.getRepository(Post)
.createQueryBuilder("post")
.select("post.title, post.createdAt")
.getRawMany()
Ограничение полей через select
Для оптимизации использования памяти и сокращения лишних данных выбирайте только необходимые поля с помощью select.
const users = await dataSource
.getRepository(User)
.createQueryBuilder("user")
.select(["user.name", "user.email"])
.getMany()