Data, What?/SQL

[BigQuery] 빅쿼리 알쓸신팁 2

GrilleDream 2022. 6. 3. 18:30

4. SELECT * 사용에 주의!

BigQuery는 Columnar DB이므로 모든 열을 다 불러오는 건 자원 낭비가 심하다.

스키마 형태는 테이블 정보를 참고하고 가능하면 필요한 열만 뽑아다 쓰자.

 

5. WHERE는 빠르면 빠를 수록 좋다!

여러 번의 서브 쿼리가 필요한 복잡한 쿼리문에서 특히 중요한데, WHERE는 가능한 안쪽에서 사용하는 게 경제적이다.

또 WHERE 조건 앞에 함수를 씌우는 건 지양하는 것이 좋다.

#이거 보다는
WHERE FORMAT_DATE("%Y-%m-%d", ymd) >= DATE_SUB(CURRENT_DATE("Asia/Seoul"), INTERVAL 7 DAY)

#이게 더 낫다
WHERE ymd >= FORMAT("%Y.%m.%d", DATE_SUB(CURRENT_DATE("Asia/Seoul"), INTERVAL 7 DAY))

 

6. LOWER, UPPER 는 지양하자!

빅쿼리는 대소문자를 구분(case sensitive)하므로 검색할 때 이 부분을 신경써야 하는데, STRING을  모두 소문자로 바꿔주는 LOWER나 대문자로 바꿔주는 UPPER는 성능을 크게 잡아먹는다.

그러니 대신 정규표현식을 쓰자

#비추천
lower(text) LIKE '%bigquery%' OR lower(text) LIKE '%big query%'

#추천
regexp_contains(text, '(?i)(bigquery|big query)')

(?i) 가 대소문자 상관없이 가져오는 것이고, 뒤에 | 가 OR 조건 되겠다.

 

정규 표현식 관련 정보(RE2)

 

GitHub - google/re2: RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression engines like those used

RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression engines like those used in PCRE, Perl, and Python. It is a C++ library. - GitHub - google/re2: RE2 is a fast, saf...

github.com