피드로 돌아가기
Dev.toDatabase
원문 읽기
Dynamic SQL을 통한 다중 테이블 JOIN 자동화 및 쿼리 생성 공수 절감
Dynamically Generating SQL Joins for Tables Based on a Common Column
AI 요약
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 최적화 여부 분석 - 복잡한 리포팅 쿼리의 자동화를 위한 메타데이터 테이블 설계 도입 고려