인덱스생성
ALTER TABLE 테이블네임 ADD INDEX 인덱스네임(칼럼네임);
ALTER TABLE 테이블네임 ADD UNIQUE 인덱스네임(칼럼네임);
ALTER TABLE 테이블네임 ADD PRIMARY KEY (칼럼네임);
ALTER TABLE 테이블네임 ADD FULLTEXT (칼럼네임);
인덱스사용시 좋은점
1. MIN()이나 MAX() 함수를 사용하는 쿼리에 대해,칼럼에 인덱스가 있는 경우에는 모든 열을 검사하지 않고
칼럼내의 최소값 또는 최대값을 빠르게 찾을수있다.
2.MYSQL은 인덱스를 사용하여 ORDER BY와 GROUP BY절에 대한 검색작업과 그룹작업을 빠르게 수행할수있다
3.MYSQL은 인덱스를 사용하여 데이터 열을 전부 읽지않도록 할수있다.
단점
1.ISAM과 MYISAM 테이블에 대해, 테이블에 인덱스를 무겁게 만들면 인덱스 파일이 데이터 파일보다
훨씬 더 빠르게 최대 크기에 도달하게 된다.
2. BDB테이블은 동일한 파일 내에 데이터와 인덱스 값을 함께 저장하는 구조를 가지는데, 인덱스를
추가하게 되면 해당 테이블이 최대 파일크기에 훨씬 더 빠르게 도달하게 된다.
3.InnoDB테이블은 InnoDB 테이블 스페이스 안에 모든 공간을 공유하는 구조를 가지고 있다.
인덱스를 추가하면 테이블 스페이스 내의 공간을 더욱 빠르게 소모한다.
4.인덱스는 검색속도는 빠르게 만들어 주지만 인덱스가 만들어진 칼럼 안에 값을 삽입하고 삭제하고 갱신하는
속도는 느려진다.
인덱스 선택시 고려사항
1. 인덱스를 위한 칼럼을 선택하는 가장 좋은 기준은 WHERE절 안에 나오는 칼럼, 조인 절에 명명된 칼럼, 또는
ORDER BY나 GROUP BY절에 나오는 칼럼 등이 된다는 것이다. SELECT키워드 뒤에 나오는 출력 칼럼 목록에만
나오는 칼럼은 좋은 선택이 못된다.
2.유일한 인덱스 사용
인덱스는 유일한 값들을 가지고 있는 칼럼들에 대해 효과가 좋고, 중복된 값들이 많은 칼럼들에 대해 효과가 좋지 않다.
예를 들어 성별을 기록하는 두값에 대해서는 인덱스가 별 도움이 되지 못한다.
3.짧은 값으로 인덱스를 만든다
4. 가장 왼쪽의 접두어를 활용하자
인덱스기초
http://blog.naver.com/choiye84/130055316294
인덱스사용될경우,안될경우
http://hoooow.tistory.com/119
참고
http://5dol.tistory.com/39
http://5dol.tistory.com/42
인덱스 생성
1.테이블생성할때
create table table_name(
id varchar(20) not null,
name varchar(20) not null,
index index1(name)
);
2.테이블 생성후 인덱스 추가
1.CREATE INDEX 인덱스네임 ON 테이블네임 (칼럼1,칼럼2);
2.ALTER TABLE 테이블네임 ADD INDEX 인덱스네임 (칼럼1,칼럼2);
인덱스보기
SHOW INDEX FROM 테이블네임;
인덱스삭제
ALTER TABLE 테이블네임 DROP INDEX 인덱스네임;
퍼온곳 : http://www.somegate.com/topic_new.php?topic_uid=4335
'DB' 카테고리의 다른 글
클러스터 인덱스 & Non클러스터 인덱스 (0) | 2012.07.29 |
---|---|
데이터베이스 용어 (0) | 2012.07.29 |
DBMS별 차이점 (0) | 2012.07.29 |
MYSQL 정보쿼리 (0) | 2012.07.29 |
클러스터 인덱스 & non클러스터 인덱스 (0) | 2012.07.29 |