Indexing
- Index : query를 효율적으로 하게 해줌
- Index가 없을 때, query시 collection을 full scan해서 시간이 오래 걸림
- 수행 시간 확인 : db.c.find().explain('executionStats')
Index 만들기
- createIndex() : index를 만듬.
- primary key인 _id field의 index는 기본으로 설정되어 있음
> db.c.createIndex({A : 1}) -> A라는 필드에 오름차순으로 인덱스 생성(-1은 내림차순)
> db.c.getIndexes() -> 어떤 인덱스를 쓰고 있는지 보여줌
> db.c.dropIndex({A : 1})) -> 해당 인덱스 제거
> db.c.dropIndexes() -> 모든 인덱스 제거
- Index 선택하기
- index는 storage용량을 차지하고 만들때 시간이 오래 걸림.
- MongoDB는 collection을 바꿀때마다 index를 update하기도 함.
- Compoud Index
- 2개 이상의 field로 index를 만듬
- multiple fields로 search시 유용함
> db.c.createIndex({age:1, name:-1}) -> age로 오름차순, name으로 내림차순으로 compound index 생성
- Embedded Document indexing
- embedded document에 대해서도 index 생성 가능
> db.c.createIndex({'name.first':1})
- Array indexing
- array에 대해서도 index 생성 가능
- Unique indexes
- index에 단 하나의 값만 존재
- index 생성 후 key에 새로운 값을 insert시 error 발생
- 중복값이 있을 때, unique index 생성 안됨
> db.c.createIndex({name:1}, {unique:true})
- Sparse indexes
- document내에 key가 있는 문서만 index로 찾음
- key에 없는 문서를 찾을때 index를 안씀 : hint() method로 강제로 index를 쓰게 함
> db.c.createIndex({name:1}, {unique:true, sparse:true})
- Partial indexes
- 어떤 조건에 맞는 문서만 index함
> db.c.createIndex({name:1}, {partialFilterExpression : {age:{$gte 10}}})
- Hashed indexes
- MongoDB에서 B-tree index 외에 hashed index도 제공
- multi-key index 지원 안됨
- compound index, unique 안됨
> db.c.createIndex({id:'hashed'})
'NoSQL' 카테고리의 다른 글
MongoDB - text search (0) | 2023.08.08 |
---|---|
MongoDB - Geospatial data (0) | 2023.08.08 |
MongoDB - Querying (0) | 2023.08.07 |
MongoDB - Crud operations (0) | 2023.08.07 |
MongoDB 기본 및 시작하기 (0) | 2023.08.06 |