피드로 돌아가기
Dynamically Generating SQL Joins for Tables Based on a Common Column
Dev.toDev.to
Database

Dynamic SQL을 통한 다중 테이블 JOIN 자동화 및 쿼리 생성 공수 절감

Dynamically Generating SQL Joins for Tables Based on a Common Column

Tzvi Gregory Kaidanov2026년 6월 8일9intermediate

Context

공통 컬럼을 공유하는 다수의 테이블 구조에서 수동으로 JOIN 문을 작성함에 따른 운영 효율 저하 발생. 테이블 규모 증가 시 쿼리 유지보수 비용이 기하급수적으로 상승하는 한계점 노출.

Technical Solution

  • INFORMATION_SCHEMA.COLUMNS 뷰 쿼리를 통한 특정 패턴의 공통 컬럼 보유 테이블 리스트 자동 식별
  • ROW_NUMBER() 함수를 적용한 메타데이터 임시 테이블 구축으로 각 테이블에 고유 Alias(T0, T1...) 부여
  • STRING_AGG 함수를 활용하여 다수의 LEFT JOIN 절을 단일 문자열로 동적 병합하는 로직 구현
  • Base Table 선정 후 동적으로 생성된 JOIN 구문을 결합하여 sp_executesql로 최종 쿼리 실행
  • 하드코딩 배제를 통한 스키마 변경 시 쿼리 수정 없이 즉각 대응 가능한 유연한 구조 설계

- INFORMATION_SCHEMA를 활용한 메타데이터 기반의 동적 쿼리 생성 가능 여부 검토 - Dynamic SQL 사용 시 SQL Injection 방지를 위한 QUOTENAME 함수 적용 필수 확인 - 대량의 테이블 JOIN 시 발생 가능한 성능 저하 및 Execution Plan 최적화 여부 분석 - 복잡한 리포팅 쿼리의 자동화를 위한 메타데이터 테이블 설계 도입 고려

원문 읽기