db.orders.createIndex({userId : 1, status : 1, createdAt : -1})
db.orders.find({userId : 123, status: "paid"}).explain("executionstats")
------
IXSCAN : 인덱스 스캔이 발생 (제대로 사용)
COLLSCAN : 전체 컬렉션을 스캔 (인덱스를 미사용)
FETCH : 인덱스에서 찾은 문서를 읽었다.
SROT : 인덱스를 사용해서 정렬으 하지 못했다.
nReturned : 실제로 반환되는 문서의 수
totalkeysExamined : 인덱스에서 검사한 엔트리의 갯수 (작을 수록 효율적)
totalDocsExamined : 실제 문서를 몇개 읽었는지 (작을 수록 효율적)
executionTimeMillis : latency
1. IXSCAN 사용 + totalDeocsExamined == nRetunred : 최적
2. COLLSCAN 사용 + totalDocExamined > nReturned : 인덱스를 추가 하거나 튜닝이 필요
3. IXSCAN + SORT -> 정렬하는 필드가 인덱스에 포함이 되어 있는지 확인필요
'Database > NoSQL' 카테고리의 다른 글
[MongoDB] 주요 쿼리 연산자 (0) | 2025.06.16 |
---|---|
[MongoDB] CRUD와 Upsert (0) | 2025.06.16 |
[MongoDB] 다양한 인덱스 (0) | 2025.06.16 |
[MongoDB] index (0) | 2025.06.16 |
[MongoDB] 스키마 설계 패턴 (0) | 2025.06.16 |