새로운 DB를 관리해야 된다면 가장 먼저 해야 될 일은 DB 내에 데이터를 파악하는 일이 될 것이다.
이번 글에서는 데이터를 파악해야 되는 이유와 데이터 추출시 유의할 점을 적어보았다.
회사마다 다르겠지만 보통 100명 이상의 직원이 있다면 DB내에 테이블이 아주 많을것이다.
그 중에 내가 모르는 테이블도 있을텐데,
이때 테이블을 이해하고자 할때 적재된 데이터를 통해서 어떤 테이블인지 유추해야 된다.
그렇다면 이제 데이터 확인. 즉, 추출시 유의할 점을 알아보자
1. LIMIT 걸고 조회하기.
테이블에 적재된 데이터는 상상이상으로 많을때가 있다.
그렇기 때문에 조회 시 LIMIT를 이용하는것은 선택이 아닌 필수!
예) “제품 테이블이 어떤식으로 적재되었는지 봐볼까~?”
SELECT product_id, category, name
FROM products
LIMIT 10
2. 파티션이 있는 테이블인지 확인하고, 파티션에 필터 조건으로 걸고 조회
파티션으로 구성된 테이블은 WHERE조건으로 필터링을 하여 조회하는 것이 필수!
왜? 유저행동로그같이 날짜별로 유저로그가 저장된 테이블이 있다고 가정하자.(날짜별 파티셔닝)
SELECT 구문으로 조회시 모든 날짜별 로그가 추출될 수 있다.
따라서 파티션을 조회하여 지정 파티션만을 추출하는것을 지향!
예) 유저 행동로그(clicks)를 파악해보자. 날짜에 필터링
SELECT clk_index, user_name, product_id
FRMO clicks
WHERE date = '20231104' -- 날짜에 따라 테이블이 분할(파티셔닝)되어 있기에 필터를 걸어줌.
LIMIT 10
3. 컬럼 수가 많은 테이블을 조회할 때 SELECT * (전체 컬럼 조회)지양하기
상품메타 데이터처럼 컬럼이 매우 많은 테이블이 종종 있다.
이런 데이터를 조회할때 SELECT* 을 진행한다면,, 그게 바로 쿼리폭탄 ㄷ_ㄷ
4. LIKE 사용 시 % 제한적으로 사용하기
%기호는 임의의 문자열을 의미한다.
이게 실행되기 위해서는 연산량이 많이 소요된다.
즉 %기호를 사용하고자 한다면 규칙을 최대한 좁혀서 사용하기.
예)앞글자가 무엇으로 시작하는지 명확한 제품
23FW로만 시작되는 제품이 있다면 ‘%FW%’가 아닌 ‘23FW%’로 사용
예)뒤에 몇글자가 오는지 명확한 제품
23FW로 시작해서 뒤에 두글자가 추가로 있는 제품이라면 ‘23FW___’가 아닌 ‘23FW__’로 사용.
제한적인 규칙일 수 록 DB리소스를 적게 쓰기 때문에 더 효율적이다.