실험 환경
Nest.js, TypeORM , MySQL, TypeScript,
코드
// soft delete
async softDeleteUser(users: User[]) {
const userIds = users.map((user) => user.id);
const startTime = Date.now();
await this.userRepository.softDelete({ id: In(userIds) });
const duration = Date.now() - startTime;
this.logger.log(
`(softDelete) Bulk update of ${userIds.length} users completed in ${duration}ms`,
);
}
// createQueryBuilder
async softDeleteUserCreateQuery(users: User[]) {
const userIds = users.map((user) => user.id);
const startTime = Date.now();
await this.userRepository
.createQueryBuilder()
.softDelete()
.where('id IN (:...userIds)', { userIds })
.execute();
const duration = Date.now() - startTime;
this.logger.log(
`(createQueryBuilder) Bulk update of ${userIds.length} users completed in ${duration}ms`,
);
}
Postman 으로 실험해본 결과
이용 방식 | 1차 속도 | 2차 속도 |
softDelete | 39 | 37 |
createQuery | 37 | 39 |
결론
두 방식다 비슷한 속도를 보인다. 상황에 맞게 softDelete 와 createQuery 를 선택해서 사용하면 되겠다.
'프로그래밍 > Nest.js' 카테고리의 다른 글
[ Nest.js ] error, Jest did not exit one second after the test run has completed. (0) | 2024.08.27 |
---|---|
[ Nest.js] 의존성 주입을 사용하는 이유와 장점 (0) | 2024.08.17 |
[ Nest.js ] update vs createQueryBuilder vs query : 다량의 데이터 업데이트 속도 비교 (0) | 2024.07.22 |
[ Nest.js ] insert vs save : 둘 이상의 데이터 저장시 속도비교 (1) | 2024.07.22 |
[ Nest.js ] Middleware, Guard, Interceptor, Pipe, Filter (0) | 2024.07.20 |