Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Uso efficiente di Query Builder
Evitare il problema delle query N+1
Il problema delle query N+1 si verifica quando il sistema esegue troppe sotto-query per ogni riga di dati recuperati.
Per evitarlo, puoi utilizzare leftJoinAndSelect o innerJoinAndSelect per combinare le tabelle in un'unica query anziché eseguire query multiple.
const users = await dataSource
.getRepository(User)
.createQueryBuilder("user")
.leftJoinAndSelect("user.posts", "post")
.getMany()
In questo caso, leftJoinAndSelect consente di recuperare tutti i post dell'utente con una singola query invece di tante piccole query.
Utilizzare getRawMany() quando servono solo dati grezzi
Quando non sono necessari oggetti completi, puoi usare getRawMany() per recuperare dati grezzi ed evitare che TypeORM elabori troppe informazioni.
const rawPosts = await dataSource
.getRepository(Post)
.createQueryBuilder("post")
.select("post.title, post.createdAt")
.getRawMany()
Limitare i campi con select
Per ottimizzare l'utilizzo della memoria e ridurre dati non necessari, seleziona solo i campi richiesti usando select.
const users = await dataSource
.getRepository(User)
.createQueryBuilder("user")
.select(["user.name", "user.email"])
.getMany()