"건초더미에서 바늘 찾기"를 빠르게 해주는 기능
→ 거대한 테이블에서 딱 몇 개 행만 콕 집어 찾는 쿼리를 빠르게!
책이 10,000권 있는 도서관에서 특정 책 1권을 찾는다고 해보세요.
| 방식 | 결과 |
|---|---|
| 📚 그냥 찾기 | 책장 다 뒤져야 함 (느림) |
| 🔖 색인(index) 사용 | 색인 보고 바로 그 칸으로! (빠름) |
Search Optimization = 이 "색인" 역할을 합니다.
→ 정식 명칭은 Search Access Path(검색 접근 경로)
Point Lookup Query = 소수의 행만 찾는 쿼리
-- 이런 쿼리들이 빨라짐!
WHERE USER_EMAIL = 'semper.google.edu' -- 등호(=)
WHERE USER_ID IN (4, 5) -- IN
✅ 좋음: 5백만 행 중 → 딱 2개 찾기 (선택적!)
❌ 나쁨: 전체의 절반을 가져오는 쿼리 (의미 없음)
ALTER TABLE MY_TABLE ADD SEARCH OPTIMIZATION; -- 켜기
ALTER TABLE MY_TABLE DROP SEARCH OPTIMIZATION; -- 끄기
SHOW TABLES LIKE '%MY_TABLE%'; -- 상태 확인
1. 켜면 → 백그라운드에서 "Search Access Path" 자동 생성
2. 각 micro-partition에 어떤 값이 있는지 미리 기록
3. 검색 시 → 필요 없는 파티션은 건너뜀(skip) → 빠름!
💡 데이터가 바뀌면 → 자동으로 업데이트 (사람이 관리 안 해도 됨)
💡 작업을 막지 않음 (켜둔 채로 INSERT/UPDATE 가능)
| 종류 | 비용 |
|---|---|
| Storage | 색인 저장 공간 필요 → 테이블 클수록 비용 ↑ |
| Snowflake-managed compute | 시간당 10 크레딧 |
| Cloud Services compute | 시간당 5 크레딧 |
| Clustering | Search Optimization | |
|---|---|---|
| 잘하는 것 | 범위/정렬 (날짜 등) | 딱 집어 찾기 (point lookup) |
| 비유 | 책을 순서대로 정렬 | 책 위치 색인 만들기 |
💡 둘은 같이 써도 됨 (한 쿼리가 둘 다 혜택 가능)
| 키워드 | 답 |
|---|---|
| 정체 | point lookup 빠르게 하는 기능 |
| 핵심 구조 | Search Access Path (= 색인) |
| 조건 | Enterprise Edition 이상 |
| 명령어 | ADD / DROP SEARCH OPTIMIZATION |
| 비용 | 10크레딧/h (관리형), 5크레딧/h (클라우드) |
| 특징 | 자동 유지, 작업 안 막음 |