실험 환경

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 를 선택해서 사용하면 되겠다.

+ Recent posts