← All guides

Claude Code SQL 쿼리 자동 생성: 작성, 최적화, 디버깅 가이드

Claude Code로 SQL 쿼리 생성, 느린 쿼리 최적화, 마이그레이션 스크립트 작성하기. PostgreSQL, MySQL, SQLite 실전 예제와 벤치마크.

🇺🇸 Read in English →

Claude Code SQL 쿼리 자동 생성: 작성, 최적화, 디버깅 가이드

Claude Code는 실제 데이터베이스 스키마 파일을 읽고 테이블 관계를 파악한 뒤, 프로덕션급 SQL 쿼리를 생성합니다 — 복잡한 쿼리 작성에 평균 23분 걸리는 시간을 2-3분으로 줄여줍니다. PostgreSQL, MySQL, SQLite 등 주요 데이터베이스 방언(dialect)을 자동 감지하고, 인덱스 추천과 마이그레이션 스크립트까지 생성합니다.

Claude Code 전체 가이드는 Claude Code Complete Guide를 참고하세요.


스키마 기반 쿼리 생성

기본 사용법

claude "schema.sql 파일을 읽고 다음 쿼리를 작성해:
- 최근 90일간 고객별 총 매출
- 고객 이름과 이메일 포함
- 주문 금액 10만원 이상인 고객만
- 매출 내림차순 정렬, 상위 50명"

Claude Code가 스키마를 직접 읽기 때문에 테이블명, 컬럼 타입, 관계를 정확히 파악합니다.

자연어 → SQL 변환

claude "prisma/schema.prisma 기반으로:
'최근 30일 가입했지만 아직 구매하지 않은 사용자 목록'"

출력:

SELECT u.id, u.email, u.created_at
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE u.created_at >= NOW() - INTERVAL '30 days'
  AND o.id IS NULL
ORDER BY u.created_at DESC;

느린 쿼리 최적화

EXPLAIN ANALYZE 분석

claude "이 쿼리가 500만 행 테이블에서 12초 걸려.
slow-query.txt의 EXPLAIN ANALYZE 출력을 분석하고 최적화해.
개선 전/후 비교와 예상 성능 향상 포함."

주요 최적화 패턴:

문제 해결법 성능 개선
WHERE/JOIN 컬럼 인덱스 없음 CREATE INDEX 10-100배
넓은 테이블에 SELECT * 필요한 컬럼만 선택 2-5배
N+1 서브쿼리 JOIN으로 변환 5-50배
불필요한 ORDER BY 제거 또는 인덱스 추가 2-10배

벤치마크: 200만 행 orders 테이블에서 Claude Code의 인덱스 제안으로 리포팅 쿼리가 8.3초 → 0.12초로 개선됨 (69배 향상).


300개 프로덕션 검증 프롬프트

Power Prompts 300 (₩38,000)에는 데이터베이스 설계, 쿼리 최적화, 마이그레이션, 성능 튜닝 등 25개 이상의 DB 전용 프롬프트가 포함되어 있습니다.

Power Prompts 300 구매하기 — $29


마이그레이션 스크립트 생성

무중단 스키마 변경

claude "orders 테이블에 status enum 컬럼 추가하는 마이그레이션 생성:
- 기본값 'pending', NOT NULL
- status에 인덱스 추가
- 대용량 테이블 잠금 없이 (zero-downtime)
- 롤백 스크립트 포함"
-- 적용
ALTER TABLE orders ADD COLUMN status VARCHAR(20) NOT NULL DEFAULT 'pending';
CREATE INDEX CONCURRENTLY idx_orders_status ON orders (status);

-- 롤백
DROP INDEX CONCURRENTLY IF EXISTS idx_orders_status;
ALTER TABLE orders DROP COLUMN IF EXISTS status;

CONCURRENTLY 키워드는 PostgreSQL 전용입니다. Claude Code가 사용 중인 DB에 맞는 방언을 자동 적용합니다.


실전 패턴

시드 데이터 생성

claude "users, orders 테이블에 현실적인 시드 데이터 1000행 생성.
한국어 이름 포함, INSERT 문으로 출력.
엣지 케이스: NULL 옵션 필드, 긴 이름, 유니코드 문자."

복잡한 리포팅 쿼리

claude "월별 코호트 리텐션 리포트 쿼리:
- 코호트 = 가입 월
- 1-12개월 리텐션 % 표시
- 코호트당 표본 크기 포함
- 피벗 테이블 형식"

스키마 리뷰

claude "schema.sql 리뷰:
- 외래키 인덱스 누락
- NOT NULL 제약 누락
- 정규화 문제
- 명명 규칙 일관성
- 보안 (개인정보 저장)"

비용 효율적인 배치 SQL 생성을 위해 프롬프트 캐싱 손익분기 분석을 참고하세요 — 스키마 컨텍스트를 캐싱하면 반복 쿼리에서 토큰을 크게 절약할 수 있습니다.


모델 선택 가이드

작업 권장 모델 비용 (1000토큰)
단순 CRUD 쿼리 Haiku $0.00025 입력
복잡한 JOIN/윈도우 함수 Sonnet $0.003 입력
스키마 설계/아키텍처 Opus $0.015 입력

모델별 상세 비교는 Haiku vs Sonnet vs Opus를 참고하세요.


Frequently Asked Questions

Claude Code가 실제 데이터베이스에 직접 연결할 수 있나요?

직접 연결은 아닙니다. 프로젝트의 스키마 파일(.sql, schema.prisma, models.py)을 읽습니다. 라이브 스키마가 필요하면 pg_dump --schema-only > schema.sql로 덤프한 뒤 Claude Code에 전달하세요.

SQL 생성 정확도는 얼마나 되나요?

알려진 스키마에 대한 CRUD·리포팅 쿼리의 경우 95% 이상 구문 정확도를 보입니다. 윈도우 함수가 포함된 분석 쿼리는 1회 수정이 필요할 수 있습니다. 항상 스테이징 환경에서 테스트하세요.

PostgreSQL과 MySQL 방언을 구분하나요?

네. 스키마 파일이나 ORM 설정에서 DB 종류를 자동 감지합니다. PostgreSQL의 CONCURRENTLY, MySQL의 ENGINE=InnoDB, SQLite의 WITHOUT ROWID 등 방언별 최적 패턴을 적용합니다.

프로덕션 마이그레이션에 Claude Code를 써도 되나요?

초기 마이그레이션 생성에는 적합합니다. 단, 반드시 수동 리뷰 후 스테이징에서 테스트하세요. DROP COLUMN 같은 파괴적 작업에는 Claude Code가 자동으로 롤백 스크립트를 생성하지만, 프로덕션 데이터 안전은 사람의 검증이 필수입니다.

ORM 마이그레이션도 생성 가능한가요?

Prisma, SQLAlchemy(Alembic), Django ORM, TypeORM 등 주요 ORM의 마이그레이션 형식을 지원합니다. 사용 중인 ORM을 알려주면 해당 형식으로 생성합니다.


Power Prompts 300 (₩38,000) — 데이터베이스, 쿼리 최적화, 마이그레이션 안전 패턴 + 250개 이상 개발 워크플로우 프롬프트.

Power Prompts 300 구매하기 — $29

도구와 자료