240711(+36) | SQL 가독성 좋게 작성하기

청솔·2024년 7월 11일
0

아티클

목록 보기
5/9
post-thumbnail

SQL 가독성을 좋게 하는 방법

1. 예약어는 대문자로 - 컬럼,테이블과 구분

2. 주석을 쓰자: 콤마를 앞에 두면 처리 편함

SELECT
  col1,
  col2,
FROM 
  Table
  --
  SELECT
  col1
  , col2
  # , col3
FROM 
  Table

3. 행갈이를 (더) 자주 하자

4. 의미있는 Alias(별칭)을 쓰자

🔗 아티클 출처


8 Essential Tips

for Writing Maintainable SQL Scripts

1. 키워드는 대문자로, 테이블 컬럼은 소문자로

2. 스네이크 케이스 사용: user name->user_name

3. 테이블과 컬럼에 별칭 사용: 소문자로, 짧고 직관적이고 일관성있게

4. 줄바꿈 및 들여쓰기 하기

a.각 예약어 마다
b.각 컬럼 마다
c.서브쿼리

5. 공백 사용

a.키워드와 식별자 사이
b.연산자 앞,뒤로

6. SELECT * 피하기: 필요한 컬럼명 구체적 명시

7. ANSI-92 JOIN 구문 사용: 관계 논리와 필터 논리 구분

🔗 아티클 출처

#WHERE절 조인(구식)
SELECT users.id, users.name, orders.order_date
FROM users, orders
WHERE users.id = orders.user_id
  AND users.status = 'active'
  AND orders.order_date > '2023-01-01';
--   
# JOIN/ANSI-92 구문
SELECT users.id, users.name, orders.order_date
FROM users
JOIN orders ON users.id = orders.user_id
WHERE users.status = 'active'
  AND orders.order_date > '2023-01-01';

8.공통 테이블 표현식(CTE) 사용: WITH문


Best practices

for writing SQL queries

1. 정확성, 가독성, 그 다음 최적화

쿼리가 올바른 데이터를 반환하는지 확인 필요
자주 실행되는 쿼리 또는 많은 행을 처리하는 경우에만 최적화 우선
쿼리의 정확성과 가독성을 먼저 고려한 후 성능 최적화 적용

2. 가능한 한 작은 데이터셋 생성

데이터베이스가 검색해야 하는 값의 수를 최소화
SQL의 선언적 특성을 활용하여 필요한 데이터만 지정
도구를 사용하여 SQL 쿼리를 정확하게 작성

3. 데이터 이해하기

메타데이터를 통해 데이터 구조와 내용 파악
샘플 데이터를 통해 특정 열의 값을 확인

4. 쿼리 개발

열과 테이블의 메타데이터를 연구하는 과정 필요
SELECT *로 테이블 값을 파악하고 LIMIT를 사용하여 결과 제한
필요한 최소한의 열로 범위 축소 후 필터 적용

5. 쿼리 실행 순서

FROM(JOIN) > WHERE > GROUP BY > HAVING > SELECT > UNION > ORDER BY

6. 일반적인 쿼리 지침

코드에 주석을 추가하여 이유를 설명하는 것의 중요성
ON 키워드를 사용하여 명시적으로 테이블을 조인
여러 테이블을 쿼리할 때 별칭을 사용하여 가독성 향상 필요성

7. WHERE 절 모범 사례

HAVING 절 전에 WHERE 절로 불필요한 행 필터링
WHERE 절에서 열에 함수 사용을 피함으로써 성능 최적화 필요
문자열 결합 대신 다중 조건을 사용하는 방법

8. GROUP BY 모범 사례

고유 값이 많은 열부터 그룹화하여 성능 향상
데이터 집계 시 GROUP BY 사용
내림차순으로 그룹화하는 방법

9. HAVING 절 모범 사례

HAVING 절을 집계된 데이터 필터링에만 사용
집계되기 전 데이터 필터링에는 WHERE 절 사용
필터링 기준을 명확히 할 필요성

10. SELECT 절 모범 사례

필요한 열만 선택하여 효율성 향상
쿼리 탐색 시 * 사용 가능하나 결과 제한 필요성
명확한 열 선택을 통한 성능 최적화

11. UNION 모범 사례

중복이 문제가 되지 않는 경우 UNION ALL 사용
UNION ALL이 중복 제거를 하지 않아 더 효율적임
데이터를 병합하는 방법

12. ORDER BY 모범 사례

가능한 한 정렬을 피하여 성능 최적화
서브쿼리에서 불필요한 정렬 피하기
결과 정렬의 비용을 최소화하는 방법

13. 인덱스 사용

적절한 인덱스 추가로 쿼리 성능 향상
외래 키 열과 자주 쿼리되는 열에 인덱스 추가
부분 인덱스와 복합 인덱스 사용

14. EXPLAIN 사용

EXPLAIN을 통해 쿼리 계획 분석
병목 지점을 찾아 성능 최적화
쿼리 계획을 비교하여 효율성 평가

15. CTE 사용

WITH 절을 사용하여 논리 캡슐화
복잡한 쿼리를 구조화하여 가독성 향상
JSON 필드와 같은 복잡한 데이터 처리

🔗 아티클 출처

profile
모든 사람이 쉽게 이해할 수 있는 데이터 분석을 지향하는 분석가가 되고 싶습니다. "데이터 분석은 사람을 설득 시킬 수단이다. "

0개의 댓글