PK 가 아닌 인덱스를 생성시에 지금까지 아래와 같이 생성
했었는데
인덱스를 타지 않네요.
create table table_name(
field1 int(10),
field2 int(10),
field3 int(10),
field4 int(10),
index fieldidx(field1,field2,field3)
);
그런데
index field1idx(field1),
index field2idx(field2),
...
위 처럼 인덱스를 생성하니.. desc 나 explain 시에 제대로
인덱스를 타는 걸로 나옵니다.
같은 쿼리문이라도
index 인덱스명 (필드1,필드2...) 와
index 인덱스명 (필드1) , index 인덱스명 (필드2) 는 인덱스를
타는게 왜 달라지는 가요?
제가 지금까지 알기로는 처음 처럼 인덱스를 묶어서 사용하더라도
인덱스를 활용하는 것에는
문제가 없는것으로 알았는데 아닌가보군요 -_-;
제가 궁금한 점을 다시 말씀드리면
1. 첫번째 경우와 두번째의 인덱스 활용이 다른 이유?
2. 첫번째와 같이 사용한 경우에 인덱스를 활용하려면?
3. 첫번째와 두번째 각각 디스크 사용 용량은 차이가 있는지?
4. 그 밖에 MySQL 버젼에 영향을 받는지?
저는 DB에 대해서 상당히 무지합니다.
허정수님이 지으신 책을 읽어보긴 했지만 일반적인 내용일뿐..
인덱스의 활용이나 조인문등을 제대로 알지 못하고 닥치는 대로
씁니다 -_-;
저번에 dsn 에서 DB를 알지못하는 프로그래머가 제대로 된
프로그램을 만들수 있겠냐는 말을
보고 상당히 부끄럽더군요 ㅎㅎ;
인덱스와 조인문을 제대로 배울수 있는 책도 추천해 주시면
감사하겠습니다.
새해 복 많이 받으시고 항상 건강하세요~ 9벅~
|