1. 가독성을 챙기기 위한 SQL 스타일
Mozilla(Firefox)의 SQL 스타일 가이드
https://docs.telemetry.mozilla.org/concepts/sql_style
1) 예약어는 대문자로 작성하자
: SQL에서 문법적인 용도로 사용하는 문자들을 예약어라고 합니다.
2) 컬럼 이름은 snake_case로 작성하자. 일관성이 중요하다!
3) Alias로 별칭을 지을 때는 명시적인 이름을 적용하자.
4) 왼쪽 정렬
5) 예약어나 컬럼은 한줄에 하나씩 두는 것을 권장한다.
그럼 주석처리나 가독성 면에서 용이해진다.
6) 쉼표는 컬럼 바로 뒤에
: 회사의 방식대로 따라가자
2. WITH문
: 복잡한 쿼리를 더 깔끔하게 쓰기 위해 사용하는 구문
쿼리 안에서 쓸 하위 쿼리에 이름을 붙여서 반복적으로 쓰거나, 복잡한 쿼리를 구조화할 때 좋습니다.
작성 예시
WITH 임시이름1 AS (
SELECT ...
FROM ...
WHERE ...
),임시이름2 AS(
SELECT...
FROM...
)
SELECT ...
FROM 임시이름1
WHERE ...
예시 상황: sales 테이블에서 2023년 총매출이 1억원 이상인 고객의 이름을 알고 싶을 때
일반적인 쿼리였다면 FROM 절에 서브쿼리에 들어가서 쿼리가 길어지겠죠?
SELECT customer_name
FROM (
SELECT customer_id, SUM(amount) AS total_sales
FROM sales
WHERE sale_year = 2023
GROUP BY customer_id
) AS sub
JOIN customers ON sub.customer_id = customers.customer_id
WHERE total_sales >= 100000000;
하지만 WITH문을 사용해서 하위쿼리를 이름을 지어 명시해놓는다면 아래 처럼 쿼리의 가독성이 높아집니다!
WITH yearly_sales AS (
SELECT customer_id, SUM(amount) AS total_sales
FROM sales
WHERE sale_year = 2023
GROUP BY customer_id
)
SELECT customer_name
FROM yearly_sales
JOIN customers ON yearly_sales.customer_id = customers.customer_id
WHERE total_sales >= 100000000;
WITH문을 사용하면 여러번 쓰이는 서브 쿼리를 한 번만 정의함으로써 복잡한 쿼리를 보기 쉽게 만들 수 있습니다.
3. PARTITION
Table에는 Partition이 존재할 수 있습니다.
Partition은 테이블을 작은 단위로 나눈것을 의미합니다. 즉, 큰 테이블을 쪼개서 성능을 높이고 관리하기 쉽게 만든 구조죠!
예를 들어 Table을 1000페이지짜리 책이라고 한다면 이것을 챕터별로 나누면 작은 범위에서 원하는 정보를 금방 찾을 수 있겠죠?
여기서 챕터별로 나눈 것을 파티션이라고 합니다.
PARTITION의 장점
- 쿼리 성능 향상
: 전체 데이터를 스캔하는 것보다 파티션을 설정한 곳만 스캔하는 것이 더 빠릅니다. - 데이터 관리의 용이성
: 특정 일자의 데이터를 모두 변경하거나 삭제해야 하면 파티션을 설정해서 삭제 할수 있습니다. - 비용
: 파티션에 해당하는 데이터만 스캔해서 비용을 줄일 수 있습니다.BigQuery는 쿼리 용량에 비례해서 과금되기 때문입니다.

이렇게 파티션으로 나눈 테이블 이라는 것을 확인할 수 있습니다.
세부정보에 들어가시면 어떤 파티션인지 알 수 있습니다.

'실행 시 이 쿼리가 3.03KB를 처리합니다'라고 나오는 용량이 탐색하는 범위라고 알고 계시면 됩니다.

파티션이 필수인 곳에서는 WHERE로 조건을 걸어놔야합니다.
'데이터 분석 > 01. BigQuery' 카테고리의 다른 글
| 데이터 결과 검증 방법 (1) | 2025.07.30 |
|---|---|
| 쿼리 작성시 알아야하는 것 (1) | 2025.07.29 |
| JOIN에서 헷갈리는 부분들! (2) | 2025.07.28 |
| SQL 쿼리 잘 작성하고 싶다면?? (3) | 2025.07.24 |
| 쿼리를 작성하기 전에 생각해야할 것! (7) | 2025.07.23 |
