티스토리 뷰

MongoDB/Index

covered query

mongoT 2020. 2. 28. 08:56

covered query란?

 

일단 설명하기 위해 준비를 하자.

다음과 같이 2개의 documents를 넣어주고

name key에대해 single field index를 하나 준비한다.

 

 

이제 여기서 max라는 이름의 document를 찾는 과정을 관찰해보자.

쿼리를 진단하는 방법은 explain()메서다.

db.customers.explain("executionStats").find({name: "Max"})

 

자세히보면 inpuStage의 stage를 보면 단계를 알 수 있다.

"IXSCAN" => "FETCH" 

executionStats key에는 전체 Examined된 documents개수와 returned된 개수를 알 수 있다.

 

만약 내가 "Max"라는 이름의 사람이 존재하는지만 알면된다면

 

그 사람에 대한 정보는 필요없으니까.

db.customers.find({name:"Max"}, {_id:0, name:1}) 와 같이 쿼리를 날릴것 이다.

 

stage가 IXSCAN => PROJECTION_COVERED 라고 나와 있다.

 

인덱스는 pointer를 가지고 있지만 그 자체가 값이기도 하다.

[ { value:{ name: "Max" }, pointer: address1 }]

 

그래서 인덱스에 해당하는 key값만 요구한다면(여기서는 name)

굳이 FETCH를 할 필요가 없다.

 

그래서 totalExaminedDocs가 0 인것이다.

 

공식 레퍼런스: https://docs.mongodb.com/manual/core/query-optimization/index.html#covered-query

'MongoDB > Index' 카테고리의 다른 글

Winning Plans and regected Plans  (0) 2020.02.28
Unique Index and Missing Field  (0) 2020.02.28
TTL Index  (0) 2020.02.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함