반응형
$executeRawUnsafe()와 $queryRawUnsafe()는 둘 다 Prisma에서 raw query를 직접 실행할 때 사용하는 함수이다. 하지만 당연히 차이가 있기 때문에 나눠진게 아니겠는가? 그 차이를 알아보자.
$executeRawUnsafe()
이 함수는 INSERT/UPDATE/DELETE 같은 실행만하고 결과를 받지 않는 쿼리에서 사용이 된다. 이 함수의 리턴 값은 쿼리에 의해 영향 받은 row의 수를 리턴하게 된다. 따라서 결과 데이터는 받을 수 없다.
const count = await prisma.$executeRawUnsafe(
`UPDATE "User" SET active = false WHERE last_login < now() - interval '1 year'`
);
console.log(count); // 예: 5
$queryRawUnSafe()
이 함수는 SELECT 또는 RETURNING 결과를 받아야 하는 쿼리에 사용된다. 리턴 값은 배열 형태의 결과 데이터가 된다.
const result = await prisma.$queryRawUnsafe(
`INSERT INTO "User" (name) VALUES ($1) RETURNING id`,
'Alice'
);
console.log(result); // [ { id: 123 } ]
두 함수는 쿼리가 동일하다면 불필요한 결과를 수신할 수 있다는 점을 제외하고는 성능 차이는 거의 없다고 한다!
따라서 간단한 실행만 하고 싶으면 $executeRawUnsafe를, 실행 후 결과 값까지 받고 싶다면 $queryRawUnsafe를 사용하면 된다.
반응형
'backend' 카테고리의 다른 글
[AI] 간단한 AI api 호출로 nsfw 컨텐츠 검수해보기 (1) | 2025.04.22 |
---|---|
[Server] Nginx (0) | 2025.03.26 |
[Redis] Redis를 이용한 동시성 이슈 해결 실습 - Redlock (0) | 2025.02.20 |
[Redis] Redis를 이용한 동시성 이슈 해결 실습해보기 - SETNX 사용 방법 (0) | 2025.02.20 |