Day 52 · 3/5
🌿 중급 DB

Prepared Statement

쉽게 이해하기

카페에서 단골 손님의 주문을 미리 준비해두는 것과 같습니다. '아이스 아메리카노'라는 주문이 올 걸 알면 미리 컵과 얼음을 준비해둘 수 있죠. Prepared Statement도 쿼리 구조를 미리 준비해두고 값만 나중에 넣는 방식입니다.

핵심 정리

SQL 쿼리를 미리 컴파일해서 성능과 보안을 높이는 기법입니다.

자세히 알아보기

Prepared Statement는 SQL 쿼리의 구조를 미리 컴파일해두고, 실행 시점에 파라미터 값만 채워넣는 방식입니다. 같은 패턴의 쿼리를 반복 실행할 때 성능이 향상되고, SQL 인젝션 공격도 막을 수 있습니다. 일반적인 쿼리는 실행할 때마다 파싱(구문 분석) → 컴파일 → 실행 과정을 거칩니다. 하지만 Prepared Statement는 처음 한 번만 파싱하고, 이후에는 값만 바꿔서 실행하기 때문에 더 빠릅니다. 특히 같은 쿼리를 수백 번 실행하는 배치 작업에서 효과가 큽니다. 보안 측면에서도 중요합니다. 사용자 입력을 문자열로 직접 쿼리에 넣으면 SQL 인젝션 공격에 취약하지만, Prepared Statement는 파라미터를 별도로 처리해서 악의적인 코드가 실행될 수 없습니다. 대부분의 ORM과 데이터베이스 라이브러리는 기본적으로 Prepared Statement를 사용합니다. 예를 들어 Prisma나 Drizzle은 자동으로 처리해주고, MySQL의 mysql2 라이브러리도 execute() 메서드가 Prepared Statement를 사용합니다. 개발자가 직접 신경 쓸 일은 적지만, 원리를 알면 성능 최적화와 보안 설정을 더 잘 이해할 수 있습니다.