은은하게 코드 뿌시기

[DB] 인덱스 - Oracle/MYSQL 본문

Database -Mysql,Oracle

[DB] 인덱스 - Oracle/MYSQL

은은하게미친자 2022. 8. 24. 23:06
728x90

인덱스란?

:색인, 데이터 검색 성능의 향상을 위해 테이블 열에 사용하는 객체

책을 처음부터 끝까지 읽어보면서 찾는 것보다, 목차를 이용해 찾는 것이 빠른 경우 에 사용 하는 개념.

인덱스는 사용자가 직접 특정 테이블의 열에 지정할수도 있지만 열이 기본키(primary key) 또는 고유키(unique key)일 경우 에 자동으로 생성됩니다.

 

1. ORACLE 의 인덱스

계정이 소유한 인덱스 정보 알아보기 Select * from user_indexes;
계정이 소유한 인덱스 컬럼 정보 알아보기 Select * from User_ind_colums;
인덱스 생성 1.  단일인덱스 (single index)

CREATE INDEX IDX_EMP_SAL
ON EMP(SAL);

2. 복합인덱스(concatenated index)/
결합인덱스(composite index) 
: 두개 이상 열로 만들어지는 인덱스 , Where 절의 두열이 AND 연산자로 묶이는 경우

CREATE INDEX IDX_NAME
ON EMP(SAL, ENAME, ...);

3. 고유 인덱스 (unique index)
: 열에 중복 데이터가 없을때 사용, UNIQUE 키워드를 지정하지 않으면 비고유인덱스 (non unique idnex) 가 기본값

CREATE UNIQUE INDEX IDX_NAME
ON EMP(EMPNO);

4. 함수기반 인덱스 (function based index)
: 열에 산술식 같은 데이터 가공이 진행된 결과로 인덱스 생성

CREATE INDEX IDX_NAME
ON EMP(SAL*12+COMM);

5. 비트맵 인덱스(bitmap index)
: 데이터 종류가 적고 같은 데이터가 많이 존재할 때 주로사용

CREATE BITMAP INDEX INDX_NAME
ON EMP(JOB);
생성된 인덱스 조회 SELECT * FROM USER_IND_COLUMS;
인덱스 삭제 DROP INDEX IDX_EMP_SAL;

 

1. MY SQL 의 인덱스

인덱스 조회 show index from tb_board;
인덱스 생성 1. 단일 인덱스

CREATE INDEX TESTINDEX
ON actor(last_update);

또는 

ALTER TABLE actor
ADD INDEX TESTINDEX(last_update);

2.복합 인덱스, 결합인덱스

CREATE INDEX TESTINDEX
ON actor(first_name, last_update);

CREATE INDEX TESTINDEX
ON actor(last_update);

3. 고유인덱스 : 중복값을 허용하지 않는 인덱스

CREATE unique INDEX TESTINDEX
ON actor(last_update);

인덱스 삭제 ALTER TABLE actor 
DROP INDEX TESTINDEX;
인덱스 정렬 CREATE INDEX TESTINDEX
ON actor(last_update DESC);

CREATE INDEX TESTINDEX
ON actor(last_update ASC);
인덱스 타는지 확인  explain
select * from actor;

explain
select * from actor
where first_name ='ELVIS';

 

728x90
Comments