인덱스 (Index)
1. 인덱스 생성
- 동일 인덱스를 생성할 경우 1개만 생성됨. (동일한 인덱스 생성문을 입력해도 의미 없음)
- 컬럼의 유무와 관계없이 인덱스 생성됨. (컬럼이 없어도 인덱스 생성)
- 인덱스 정렬순서 1: ASC, -1: DESC
- 인덱스는 하위 도큐먼트 단위로도 생성 가능
> db.factories.insert( { name: "xyz", metro: { city: "New York", state: "NY" } } ); > db.factories.ensureIndex( { metro : 1 } ); // this query can use the above index: > db.factories.find( { metro: { city: "New York", state: "NY" } } );
- 온라인 인덱스 생성가능 (1.3.2 버전 이상) / Unique Key 생성가능
> db.things.ensureIndex({x:1}, {background:true});
> db.things.ensureIndex({name:1}, {background:true, unique:true,
... dropDups:true});
예제)
1) [ SQL ]
create index IX_department_dptCode_dptName on department (dptcode, dptname
desc)
2) [ MongoDB 콘솔 ]
db.department.ensureIndex({dptcode:1}, dptname:-1))
3) [ JavaCode ]
BasicDBObject keys = new
BasicDBObject();
keys.put("dptname", -1);
keys.put("dptcode", 1);
dept.ensureIndex(keys);
4) [ 출력 ]
db.department.getIndexes()
추가 내용은 http://www.mongodb.org/display/DOCS/Indexes 참조
2. 인덱스 삭제
1) [SQL]
Drop index IX_department_dptCode_dptName on department
2) [ MongoDB 콘솔]
db.department.dropIndex({dptname:-1,dptcode:1})
3) [ Java Code ]
BasicDBObject keys = new BasicDBObject();
keys.put("dptname", -1);
keys.put("dptcode", 1);
//dept.ensureIndex(keys);
dept.dropIndex(keys);
이외에 index Rebuild 등의 기능이 있음. 메뉴얼 참조.
'Brain Trainning > NoSQL' 카테고리의 다른 글
[MongoDB] Start Options (0) | 2011.01.18 |
---|---|
[MongoDB] Mac 용 UI 툴 MongoHub (0) | 2011.01.18 |
[MongoDB] MongoDB 한글 검색 문제 ... (0) | 2011.01.10 |
[MongoDB] Java Code Sample #1 (0) | 2011.01.07 |
[MongoDB] MongoDB GridFS 부하테스트 (2) | 2011.01.07 |