DBMS MySQL - SQL8-4: 인덱스 SQL 사용하기

 안녕하세요. 알렉스 입니다. 이번에는 8-1 ~ 8-3까지 배운 이론을 실제 MySQL에 적용해 보도록 하겠습니다.


해당 테이블의 인덱스 상태를 확인합니다.

$ SHOW INDEX FROM [Table Name]


사진1) 테이블 생성후 인덱스 확인



사진1에서 테이블 을 생성할때 col1은 PRIMARY, col2는 UNIQUE로 지정하였습니다. 사진1에서 나온 인덱스 결과는 col1, col2만 나왔는데 col3는 아무것도 지정하지 않았기 때문입니다. 


 여기서 col1은 PRIMARY KEY(클러스터형 인덱스)이고 col2는 보조 인덱스 입니다.


사진2) 테이블 Record 생성

사진2에서 테이블의 Record를 생성할때 col1은 순서없이 INSERT하였습니다. 하지만 SELECT 구문을 사용하여 출력할때는 정렬이 되 있는것을 알수 있습니다. 이렇든 PRIMARY로 지정이 되면 MySQL에서 자동 정렬을 수행합니다. 

 그러나 Record수가 적을때는 쉽게 하지만 만약 Record수가 수만, 수십만이게 되면 DB입장에서 PRIMARY키를 정렬하는데도 상당한 시간이 걸립니다. 따라서 PRIMARY키는 Record가 없는 초기때 생성하는 것이 성능향상에 도움이 많이 됩니다.


사진3) 고유보조인덱스 생성


컬럼에 고유인덱스 생성

$ CREATE UNIQUE INDEX [Key_name] ON [Table Name] ([Column Name])


사진4) 인덱스 삭제


컬럼에 인덱스 삭제(컬럼삭제가 아님)

$ DROP INDEX [Key_name] ON [Table Name]


사진5) 보조인덱스 추가

사진5에서 인덱스를 설정했음에도 되지 않는 이유는 해당 테이블을 분석하지 않았기 때문입니다. 


컬럼에 인덱스(중복가능) 생성

$ CREATE INDEX [Key_name] ON [Table Name] ([Column Name])


해당 테이블의 인덱스 용량 확인

$ SHOW TABLE STATUS LIKE [Single quote : Table Name]


사진6) 테이블 분석후 인덱스 적용


테이블에 인덱스 적용

$ ANALYZE TABLE [Table Name]


사진6과 같이 해당 테이블의 인덱스를 분석한 다음 확인할대는 인덱스가 적용된 것을 알수 있습니다.



이전글 : DBMS MySQL - SQL8-3: 인덱스 사용시 악영향(INSERT, UPDATE, DELETE)







댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)