Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 컴활1급
- 리버스 시어링
- Columnar DB
- Data Analysis
- 삼성역
- 경화루
- 공을기
- scalar type
- 교동짜뽕
- 통목살
- 안심가츠
- 빅쿼리
- 3 in 1
- 홍콩식
- bigquery
- 라자장면
- SQL
- Control Flow
- 컴퓨터활용능력
- string분리
- PYTHON 기초
- 미식가돈카츠
- Python for Data Analysis
- IP주소 변환
- 한우트러플버거
- UNNEST
- Python입문
- jupyter notebook
- geopandas
- 컴활
Archives
- Today
- Total
maillard life
[BigQuery] 빅쿼리 알쓸신팁 2 본문
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 조건 되겠다.
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
'Data, What? > SQL' 카테고리의 다른 글
| [BigQuery] 빅쿼리 알쓸신팁 1 (0) | 2022.06.02 |
|---|---|
| [BigQuery] 하나의 String을 여러 row로 분리 (0) | 2022.04.19 |
| [BigQuery]SQL로 소수 구하기 (0) | 2022.03.16 |