[MongoDB] 인덱스 힌트

MongoDB는 RDB들과 마찬가지로 인덱스를 알아서 잘 잡고 실행하지만, 실제로 가장 좋은 인덱스를 선택하지 못할 수도 있다. 데이터 카디널리티나 통계를 보고서 잘 잡으면 좋은데, 항상 그러지는 못한다.

옵티마이저가 체감상 MySQL보단 똑똑한데, PostgreSQL보다는 많이 멍청한 것 같다.

다행히도 mongoDB는 특정 인덱스를 사용하도록 강제하는 기능을 제공한다.

예를 들어 이 쿼리는 shopID, itemAlias 쌍의 인덱스를 잡았는데, 실제로 이보다 효율적인 인덱스가 있을 수 있다.

만약 shopID, saleStatus 인덱스가 더 효율적인 경우라면, 다음과 같이 hint 옵션을 사용해서 인덱스를 알려줄 수 있다. 지정하고 싶은 인덱스의 컬럼 조합을 입력하면 된다.

그러면 의도한대로 인덱스를 잡고 실행할 것이다.

느슨해보이는 이름과 다르게, hint 옵션은 힌트를 주는게 아니라 인덱스 사용을 강제한다.



참조
https://www.mongodb.com/ko-kr/docs/manual/reference/method/cursor.hint/