DBMS3 SQL 쿼리 최적화 - CTE로 복잡한 조건 정리하기 복잡한 SQL 쿼리에서 서브쿼리를 중첩하거나 동일한 조건을 반복적으로 쓰게 되면 수행시간이 늘어나고 가독성도 떨어질 수 있습니다.이럴 때 CTE(Common Table Expression)을 사용하면 쿼리 구조를 더 명확하게 많들고 수행시간도 단축 시킬 수 있습니다. 오늘은 제가 실무에서 직접 경험한 CTE 최적화 사례를 소개드리겠습니다. 1. CTE ? CTE는 SQL에서 복잡한 쿼리를 읽기 쉽고, 재사용 가능하게 만들어주는 기능입니다.WITH 절을 사용하여, 마치 쿼리 안에 이름 붙인 임시 테이블을 만드는 것과 비슷한 개념입니다. 2. 기존 쿼리기존 쿼리는 다음과 같은 구조로 되어 있었습니다. SELECT ... (SELECT COUNT(*) FROM child_product c.. 2025. 4. 25. String_agg로 성능 최적화하기 실무에서 1:N 관계의 테이블 구조를 한 번쯤은 경험해보셨을 겁니다.게시판과 댓글, 주문과 주문상세, 유저와 활동 로그 등 다양한 도메인에서 자주 등장하죠. 이럴 때 고전적인 방법은, 먼저 부모 테이블을 조회한 뒤, 반복문을 돌면서 자식 테이블을 다시 조회하는 방식입니다.이 구조는 구현이 쉽고 명확하지만, 데이터가 많아지면 성능 이슈나 I/O 비용 증가로 이어질 수 있습니다. PostgreSQL에서는 이 문제를 string_agg 함수로 간결하게 해결할 수 있습니다.오늘은 게시판의 게시글과 댓글 관계를 예시로, 1:N 테이블 구조에서 string_agg를 어떻게 활용해 성능을 개선할 수 있는지 소개드리겠습니다. 1. 기존 방식: N+1 문제 발생기존 방식은 다음과 같은 형태로 동작합니다.public R.. 2025. 4. 11. PostgreSQL 메타 정보 조회 PostgreSQL에서 개발 또는 디버깅 중 테이블 구조를 빠르게 확인하고 싶을 때 유용한 쿼리들을 정리했습니다. information_schema 만 포함된 쿼리는 전체 DBMS 공용 사용 pg_catalog 는 postgresql 전용 1. 현재 스키마의 테이블 목록 조회SELECT tablenameFROM pg_tablesWHERE schemaname = 'public'; -- 사용 중인 스키마명 2. 특정 테이블의 전체 컬럼 정보 조회SELECT column_name, data_type, character_maximum_length, is_nullableFROM information_schema.columnsWHERE table_schema = 'public' AND table_name = .. 2024. 10. 1. 이전 1 다음