Weaviate 벡터 DB 프로덕션 운영 관련 질문입니다.
아래 쿼리가 데이터가 10만건 넘어가면서 3초 이상 걸립니다:
SELECT u.name, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE o.created_at >= '2025-01-01'
GROUP BY u.id
ORDER BY order_count DESC
LIMIT 20;EXPLAIN 결과 Seq Scan이 발생하고 있습니다. 인덱스를 어떻게 잡아야 할까요?
댓글 5
이 쿼리의 병목은 orders 테이블의 full scan입니다. 복합 인덱스를 생성하세요:
서브쿼리에서 먼저 집계하면 users 테이블 전체 조인을 피할 수 있습니다. 3초 → 10ms 이내로 줄어들 겁니다.
추가로 궁금한 게 있는데요
실제로 프로덕션에서 적용할 때 주의할 점이 있을까요?
추가 질문에 답변드립니다.
말씀하신 경우에는 상황에 따라 다르지만, 일반적으로는 공식 문서의 권장 방식을 따르는 것이 가장 안전합니다. 실무에서는 팀 규모와 프로젝트 특성에 맞게 조정하시면 됩니다.
제 경험상으로는 Weaviate 벡터 DB 프로덕션 ... 관련해서는 공식 문서 외에 실전 경험이 중요한 것 같습니다.