ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL Index 기초지식
    Technique/RDBMS 2016. 12. 22. 16:59
    반응형

    MySQL인덱스 기초

    ● 특정 컬럼 값이 가지고 있는 열을 빠르게 검색하기 위하여 사용

    ● MySQL의 경우 B-TREE 가 사용됨

    ● 오라클이나 MSSQL의 경우 여러가지 타입이 존재함

    ● 종류에는 PRIMARY KEY, UNIQUE, INDEX, FULL TEXT가 있다.(FULL TEXT의 경우 MyISAM 에서만 사용가능)

    ■ 인덱스 사용 목적

    •  where 절에 매치하는 열을 빠르게 검색하기 위하여
    •  불 필요한 열을 고려 대상에서 빠르게 제거하기 위하여
    •  JOIN시 다른 테이블에서 빠르게 필요한 열을 추출하기 위하여
    •  특정 index의 컬럼의 MIN이나 MAX값을 찾기 위하여

    ■ 인덱스를 사용하는 경우

    •  데이터의 양이 많고 검색이 빈번히 이루어 지는 경우
    •  인덱스를 걸고자 하는 필드의 값의 종류가 다양한 경우

    ■ 생성

    •  인덱스를 만들게 되면 MySQL에서  TABLE을 생성할시 만들어지는 3개의 파일 (MYD, MYI, FRM)중 MYI파일에 해당 컬럼을 색인화 하여 새롭게 저장(물론 인덱스를 사용하지 않을 경우 이 파일은 비어 있다.)
    •  사용자가 SELECT를 할 경우 인덱싱이 되어 있는 컬럼 정보를 이용할 경우 TABLE로 보내는 것이 아니라 MYI파일에 바로 검색하여 빠르게 검색

    ■ 단점 

    •  MYI파일에 새롭게 작성하기 떄문에 그만큼 디스크의 용량이 증가한다
    •  UPDATE, INSERT의 속도가 떨어진다 ( 매번  table과 table index를 모두 체크해야 하므로 속도가 느려진다 )

    ■ 주의사항

    •  index필드에 null이 존재할 수 없다
    •  한 테이블에 5개 이상의 인덱스는 권장하지 않는다
    •  인덱스가 된 컬럼을 가지고 조건에서 연산을 하면 무의미한 짓이다

    ■ 인덱스를 걸었지만 무의미 한 경우

    •  not <> 는 인덱스가 무의미하다
    •  like도 무의함
    •  where에서 연산하는 경우
    •  문자열의 경우 150 바이트 초과시


    반응형

    'Technique > RDBMS' 카테고리의 다른 글

    MySQL Buffered , Unbuffered Query  (0) 2016.12.27
    문자셋( Character set )과 콜레이션( Collation )  (0) 2016.12.27
    MySQL INET 함수  (0) 2016.11.17
    트랜잭션(Transaction)  (0) 2016.06.06
    슬로우 쿼리 로그  (0) 2016.06.06

    댓글

Designed by Tistory.