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