블로그 이미지
LifeisSimple

calendar

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

Notice

2011. 1. 11. 16:55 Brain Trainning/NoSQL

인덱스 (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
posted by LifeisSimple