'인덱스'에 해당되는 글 1건

728x90

인덱스 설정법

 

 

인덱스와 조인(JOIN)에 대한 이해만 정확하게 하고 있으면 최적화된 SQL을 작성하는데 큰 도움이 된다.

 

인덱스(Index)란?

 

  • 해당 데이터의 검색을 위해 전체 테이블을 읽지 않고 해당 row의 주소를 통해서 직접 접근할 경우에 사용
  • 특정 칼럼에 Index를 생성하면, 해당 칼럼의 데이터들을 정렬하여 별도의 공간에 데이터의 물리적 주소와 함께 저장한다.
  • NULL 은 Index 만들어지지 않는다. NULL이 많은 항목은 Index 로는 부적합하다.
  • Index 의 가장 중요한 기능은 데이터의 조회(select) 속도를 빠르게 하는 것이다.
    Index가 없다면 특정한 값을 찾기 위해 모든 데이터를 다 뒤져야 한다.
  • 테이블을 삭제하면 관련 인덱스는 자동으로 삭제된다.
  • 인덱스를 사용하면 디스크의 I/O를 감소시킬 수 있다.

기본적으로 조건절에 등장하는 칼럼과 조인 조건으로 사용되는 컬럼에는 인덱스를 만드는 것이 성능 면에서 유리하다.

 

인덱스 설정

 

생성

오라클

  CREATE INDEX <인덱스명> ON <테이블명> (칼럼);

 MySQL

  CREATE INDEX <인덱스명> ON <테이블명> (칼럼);

  CREATE UNIQUE INDEX <인덱스명> ON <테이블명> (칼럼); --UNIQUE 인덱스 

  ALTER TABLE <테이블명> ADD INDEX <인덱스명> (칼럼);

  ALTER TABLE <테이블명> ADD INDEX (A,B,C) ; -- 결합인덱스 설정

 삭제

오라클

  DROP INDEX <인덱스명>;

 MySQL

  ALTER TABLE <테이블명> DROP INDEX <인덱스명>;

  DROP INDEX <인덱스명> ON <테이블명>;

 보기

오라클

 

 MySQL

  SHOW INDEX FROM <테이블명>;

  SHOW KEYS FROM <테이블명>;

 검사

 오라클

 

 MySQL

  해당 쿼리문이 인덱스를 타는지 안타는지 알기 위해서는 쿼리문 앞에
  explain 을 붙여주면 인덱스를 타는지 알 수 있다.

 

MySQL 인덱스 설정 예시

 

ALTER TABLE `SALES_DATA`
  ADD KEY `shop_agent_ym` (`shop_code`,`agent_code`,`YM`);

ref : 조인의 순서와 상관없이 사용되며, primary key나 unique 키 등의 제약조건이 없다. 인덱스의 종류와 관계없이 동등 조건으로 검색할 때는 ref 접근 방법이 사용된다.

 

 

 

 

'SQL' 카테고리의 다른 글

[MySQL] IF Select  (0) 2015.04.03
[MySQL] 조건에 따라서 값을 지정해 주는 CASE문  (0) 2015.02.28
[SQL] WHERE 기능, 성능향상 팁 *****  (1) 2015.02.01
MySQL 운영 문제점과 해법들  (0) 2015.01.31
[SQL] 쿼리(Query)의 개념  (0) 2015.01.26
블로그 이미지

Link2Me

,