b-tree
-
[MongoDB] Compound Index 생성해도 왜 쿼리가 느리지?Software Development/Database 2022. 5. 31. 20:40
여러개의 field를 가지고 index를 생성할 때 compound index를 이용한다. 생성한 compound index의 field를 포함하는 조건을 가지고 query를 실행해도 느린 경우가 있다. 그 이유는 Query Selectivity과 관련이 있다. eplain('executionStats')로 쿼리플랜을 조회하면, totalKeysExamined, nReturned가 있다. 위 두 값의 차이가 크면 성능이 좋지 못한 것이다. 예를 들어 nReturned가 100이고, totalKeysExamined가 100,000이라면 100개의 문서를 찾는데 100,000개의 키를 스캔하게 되는 것이다. 인덱스를 타서 Collection Scan을 피하긴 했지만, 여전히 스캔하는 데이터의 양이 많은 것이..