Top 41 오라클 인덱스 예제 The 232 Detailed Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 오라클 인덱스 예제 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://toplist.maxfit.vn team, along with other related topics such as: 오라클 인덱스 예제 오라클 인덱스 조회, 오라클 인덱스 구조, 오라클 인덱스 생성, 오라클 인덱스 원리, 오라클 인덱스 사용, 오라클 인덱스 힌트, 오라클 인덱스 여러개, 오라클 인덱스 추가


인덱스를 생성해보자! 실행계획까지 확인해줌
인덱스를 생성해보자! 실행계획까지 확인해줌


[Oracle] 오라클 #22, Index(인덱스) 개념 및 예제

  • Article author: sas-study.tistory.com
  • Reviews from users: 22678 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Oracle] 오라클 #22, Index(인덱스) 개념 및 예제 인덱스, Index – 색인 – 검색(select)을 빠른 속도로 하기 위해서 사용하는 도구 – 오라클은 테이블 생성 시 인덱스를 따로 생성하지 않아도 자동으로 … …
  • Most searched keywords: Whether you are looking for [Oracle] 오라클 #22, Index(인덱스) 개념 및 예제 인덱스, Index – 색인 – 검색(select)을 빠른 속도로 하기 위해서 사용하는 도구 – 오라클은 테이블 생성 시 인덱스를 따로 생성하지 않아도 자동으로 … 인덱스, Index – 색인 – 검색(select)을 빠른 속도로 하기 위해서 사용하는 도구 – 오라클은 테이블 생성 시 인덱스를 따로 생성하지 않아도 자동으로 생성된다. -> PK, Unique 컬럼 자동으로 색인 생성. -> PK ..
  • Table of Contents:

Header Menu

Main Menu

[Oracle] 오라클 #22 Index(인덱스) 개념 및 예제

‘DatabaseOracle’ 관련 글

Sidebar – Right

Sidebar – Footer 1

Sidebar – Footer 2

Sidebar – Footer 3

Sidebar – Footer 4

Copyright © 코딩하는 흑구 All Rights Reserved

Designed by JB FACTORY

티스토리툴바

[Oracle] 오라클 #22, Index(인덱스) 개념 및 예제
[Oracle] 오라클 #22, Index(인덱스) 개념 및 예제

Read More

[Oracle] 오라클 인덱스(Index) 사용법 총정리(생성, 조회, 삭제, 리빌드)

  • Article author: coding-factory.tistory.com
  • Reviews from users: 39214 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Oracle] 오라클 인덱스(Index) 사용법 총정리(생성, 조회, 삭제, 리빌드) 예제 ALTER INDEX EX_INDEX RENAME TO EX_INDEX_NEW. 인덱스 명을 바꾸고 싶다면 위와 같이하시면 됩니다. 참고로 오라클에서 인덱스의 구성 컬럼을 … …
  • Most searched keywords: Whether you are looking for [Oracle] 오라클 인덱스(Index) 사용법 총정리(생성, 조회, 삭제, 리빌드) 예제 ALTER INDEX EX_INDEX RENAME TO EX_INDEX_NEW. 인덱스 명을 바꾸고 싶다면 위와 같이하시면 됩니다. 참고로 오라클에서 인덱스의 구성 컬럼을 … 인덱스(Index)란? 인덱스는 데이터베이스 테이블에 있는 데이터를 빨리 찾기 위한 용도의 데이터베이스 객체이며 일종의 색인기술입니다. 테이블에 index를 생성하게 되면 index Table을 생성해 관리합니다. 인덱..
  • Table of Contents:

Header Menu

Main Menu

인덱스(Index)란

인덱스(Index) 사용 예시

인덱스(Index) 리빌드(Rebuild)사용 예시

인덱스(Index)를 남발하지 말아야 하는 이유

Sidebar – Right

Copyright © 코딩팩토리 All Rights Reserved

Designed by JB FACTORY

티스토리툴바

[Oracle] 오라클 인덱스(Index) 사용법 총정리(생성, 조회, 삭제, 리빌드)
[Oracle] 오라클 인덱스(Index) 사용법 총정리(생성, 조회, 삭제, 리빌드)

Read More

[ORACLE] INDEX기본 구조와 사용

  • Article author: kwomy.tistory.com
  • Reviews from users: 10047 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [ORACLE] INDEX기본 구조와 사용 인덱스는 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 오라클 … 예제 CREATE INDEX EX_INDEX ON CUSTOMERS(NAME,ADDRESS); –예제 컬럼 … …
  • Most searched keywords: Whether you are looking for [ORACLE] INDEX기본 구조와 사용 인덱스는 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 오라클 … 예제 CREATE INDEX EX_INDEX ON CUSTOMERS(NAME,ADDRESS); –예제 컬럼 … * 인덱스란? 인덱스는 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 오라클 데이터베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조이다. 일종의 색인 기술로써 테이블..
  • Table of Contents:

태그

댓글0

컨텐츠 글자 크기

카테고리

최근 글

인기 글

다국어 번역

방문자 통계

티스토리툴바

[ORACLE] INDEX기본 구조와 사용
[ORACLE] INDEX기본 구조와 사용

Read More

헬스하는 감성 개발자 :: [Database] 오라클 INDEX(인덱스)란? | 인덱스 생성, 수정, 삭제, 재생성하기 | 인덱스 사용 장점 단점 | 오라클 인덱스 종류 | 인덱스 정렬 | 인덱스 예제 | ORACLE OBJECT INDEX (java로 웹개발하기)(day28)

  • Article author: healthdevelop.tistory.com
  • Reviews from users: 28366 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 헬스하는 감성 개발자 :: [Database] 오라클 INDEX(인덱스)란? | 인덱스 생성, 수정, 삭제, 재생성하기 | 인덱스 사용 장점 단점 | 오라클 인덱스 종류 | 인덱스 정렬 | 인덱스 예제 | ORACLE OBJECT INDEX (java로 웹개발하기)(day28) INDEX란,, SQL명령문의 처리 속도를 향상하기 위해 칼럼에 대해 생성하는 오라클 객체로, … 그럼 오라클 INDEX의 간단한 예제를 풀어봅시다. …
  • Most searched keywords: Whether you are looking for 헬스하는 감성 개발자 :: [Database] 오라클 INDEX(인덱스)란? | 인덱스 생성, 수정, 삭제, 재생성하기 | 인덱스 사용 장점 단점 | 오라클 인덱스 종류 | 인덱스 정렬 | 인덱스 예제 | ORACLE OBJECT INDEX (java로 웹개발하기)(day28) INDEX란,, SQL명령문의 처리 속도를 향상하기 위해 칼럼에 대해 생성하는 오라클 객체로, … 그럼 오라클 INDEX의 간단한 예제를 풀어봅시다. INDEX란,, SQL명령문의 처리 속도를 향상하기 위해 칼럼에 대해 생성하는 오라클 객체로, 내부 구조는 B*트리 형식으로 구성되어 있습니다. 인덱스(INDEX)의 장/단점 ● 장점 검색 속도가 빨라지고 시스템에 ..
  • Table of Contents:

네비게이션

[Database] 오라클 INDEX(인덱스)란 인덱스 생성 수정 삭제 재생성하기 인덱스 사용 장점 단점 오라클 인덱스 종류 인덱스 정렬 인덱스 예제 ORACLE OBJECT INDEX (java로 웹개발하기)(day28)

인덱스(INDEX)의 장단점

INDEX 표현식

INDEX 구조

INDEX 종류

INDEX 삭제 재생성

▶ INDEX 활용한 정렬

SQL(INDEX) 예제

사이드바

검색

티스토리툴바

헬스하는 감성 개발자 :: [Database] 오라클 INDEX(인덱스)란? | 인덱스 생성, 수정, 삭제, 재생성하기 | 인덱스 사용 장점 단점 | 오라클 인덱스 종류 | 인덱스 정렬 | 인덱스 예제 | ORACLE OBJECT INDEX (java로 웹개발하기)(day28)
헬스하는 감성 개발자 :: [Database] 오라클 INDEX(인덱스)란? | 인덱스 생성, 수정, 삭제, 재생성하기 | 인덱스 사용 장점 단점 | 오라클 인덱스 종류 | 인덱스 정렬 | 인덱스 예제 | ORACLE OBJECT INDEX (java로 웹개발하기)(day28)

Read More

ORACLE | 인덱스 (INDEX) :: 매일매일 딥러닝

  • Article author: everyday-deeplearning.tistory.com
  • Reviews from users: 48607 ⭐ Ratings
  • Top rated: 3.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about ORACLE | 인덱스 (INDEX) :: 매일매일 딥러닝 SQL 인덱스는 책의 목차와 같은 기능을 합니다. 따라서 인덱스를 검색 속도를 높이기 위해 사용할 수 있습니다. 예제 … …
  • Most searched keywords: Whether you are looking for ORACLE | 인덱스 (INDEX) :: 매일매일 딥러닝 SQL 인덱스는 책의 목차와 같은 기능을 합니다. 따라서 인덱스를 검색 속도를 높이기 위해 사용할 수 있습니다. 예제 … 안녕하세요! 오늘은 인덱스에 대해 알아보겠습니다. 책에는 목차, 즉 인덱스가 있습니다. 우리는 책의 내용을 찾을 때 이 인덱스를 이용하죠~ SQL 인덱스는 책의 목차와 같은 기능을 합니다. 따라서 인덱스를 검..(내가 보려고 정리하는 블로그)
  • Table of Contents:
ORACLE | 인덱스 (INDEX) :: 매일매일 딥러닝
ORACLE | 인덱스 (INDEX) :: 매일매일 딥러닝

Read More

[DB] 인덱스(Index) 사용 예시 (생성, 조회, 삭제, 리빌드)

  • Article author: choicode.tistory.com
  • Reviews from users: 10246 ⭐ Ratings
  • Top rated: 3.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [DB] 인덱스(Index) 사용 예시 (생성, 조회, 삭제, 리빌드) 예제 1) 기본 CREATE INDEX EX_INDEX ON B(B_NO, B_TITLE); –예제 2) … 오라클은 테이블 정의 시 PRIMARY KEY와 UNIQUE KEY 제약조건을 정의할 때 … …
  • Most searched keywords: Whether you are looking for [DB] 인덱스(Index) 사용 예시 (생성, 조회, 삭제, 리빌드) 예제 1) 기본 CREATE INDEX EX_INDEX ON B(B_NO, B_TITLE); –예제 2) … 오라클은 테이블 정의 시 PRIMARY KEY와 UNIQUE KEY 제약조건을 정의할 때 … 들어가면서.. 인덱스를 사용하는 방법을 알아보려 한다. 예전에 실습용으로 잠깐 만들어 두었던 B 테이블을 가지고 간단한 예제를 진행해 보려고 한다.  인덱스(Index) 사용 예시 ① 인덱스 생성 –문법 CREATE I..
  • Table of Contents:

들어가면서

인덱스(Index) 사용 예시

인덱스 리빌드(Rebuild) 사용 예시

태그

관련글

댓글0

최근글

인기글

전체 방문자

태그

티스토리툴바

[DB] 인덱스(Index) 사용 예시 (생성, 조회, 삭제, 리빌드)
[DB] 인덱스(Index) 사용 예시 (생성, 조회, 삭제, 리빌드)

Read More

ORACLE | INDEX 기본구조 | INDEX 사용 | INDEX 종류 | B-TREE INDEX | BITMAP INDEX – RECOR:D

  • Article author: kjh95.tistory.com
  • Reviews from users: 49319 ⭐ Ratings
  • Top rated: 3.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about ORACLE | INDEX 기본구조 | INDEX 사용 | INDEX 종류 | B-TREE INDEX | BITMAP INDEX – RECOR:D 인덱스는 테이블이나 클러스트에서 쓰이는 선택적인 객체로서, 오라클 … 예제 CREATE INDEX EX_INDEX ON CUSTOMERS(NAME,ADDRESS); –예제 컬럼 … …
  • Most searched keywords: Whether you are looking for ORACLE | INDEX 기본구조 | INDEX 사용 | INDEX 종류 | B-TREE INDEX | BITMAP INDEX – RECOR:D 인덱스는 테이블이나 클러스트에서 쓰이는 선택적인 객체로서, 오라클 … 예제 CREATE INDEX EX_INDEX ON CUSTOMERS(NAME,ADDRESS); –예제 컬럼 … INDEX 인덱스는 테이블이나 클러스트에서 쓰이는 선택적인 객체로서, 오라클 데이터베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조이다. 일종의 색인 기술로써 테이블에 index..유용한 기술 블로그
  • Table of Contents:
ORACLE | INDEX 기본구조 | INDEX 사용 | INDEX 종류 | B-TREE INDEX | BITMAP INDEX - RECOR:D
ORACLE | INDEX 기본구조 | INDEX 사용 | INDEX 종류 | B-TREE INDEX | BITMAP INDEX – RECOR:D

Read More

18. 인덱스 – 예제로 배우는 ORACLE 11g

  • Article author: wikidocs.net
  • Reviews from users: 42469 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 18. 인덱스 – 예제로 배우는 ORACLE 11g 인덱스. SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클 객체이다. 인덱스의 장점. 검색 속도가 빨라진다. …
  • Most searched keywords: Whether you are looking for 18. 인덱스 – 예제로 배우는 ORACLE 11g 인덱스. SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클 객체이다. 인덱스의 장점. 검색 속도가 빨라진다. 온라인 책을 제작 공유하는 플랫폼 서비스
  • Table of Contents:
18. 인덱스 - 예제로 배우는 ORACLE 11g
18. 인덱스 – 예제로 배우는 ORACLE 11g

Read More


See more articles in the same category here: toplist.maxfit.vn/blog.

[Oracle] 오라클 #22, Index(인덱스) 개념 및 예제

728×90

인덱스, Index

– 색인

– 검색(select)을 빠른 속도로 하기 위해서 사용하는 도구

– 오라클은 테이블 생성 시 인덱스를 따로 생성하지 않아도 자동으로 생성된다. -> PK, Unique 컬럼 자동으로 색인 생성.

-> PK 컬럼 검색속도 >>>>> 일반 컬럼 검색속도 : PK는 자동으로 Index를 생성하기 때문에

검색속도 차이 비교

먼저 일반컬럼을 검색했을때 반환되는 속도는

select * from tblIndex where name =’정소은’; 0.08초

name 컬럼에 인덱스 생성하기

>> create index idxIndexName on tblIndex(name);

색인 후

select * from tblIndex where name =’정소은’; 0.003초

>> 훨씬 빨라진 모습을 보인다.

예를 들어,

고객관리 -> 관리자가 고객이름으로 검색을 많이한다면… -> 인덱스없이 검색하면 느리니까 이름에다가 인덱스를 부여하자 그럼 빨라진다.

인덱스, 장단점 정리

특징

1. 검색 처리 속도를 향상시킨다.

2. 비용이 비싸다 -> 인덱스를 create 해주어야 하기 때문

인덱스 사용해야 하는 경우(중요)

1. 테이블 행의 갯수가 많은 경우.(찾아야할 데이터)

2. 인덱스를 적용한 컬럼이 where 절에서 많이 사용되는 경우 (*****)

3. join할 때 사용하는 컬럼(on 부모테이블.PK = 자식테이블.FK) (*****)

4. 검색 결과가 원본 테이블 데이터 2 ~ 4%에 해당하는 경우 (*****)

5. 해당 컬럼이 null을 포함하는 경우(색인에 null이 제외)

인덱스 사용하면 안 좋은 경우

1. 테이블의 행의 갯수가 적은 경우

2. 검색결과가 원본테이블의 많은 비중을 차지하는 경우.

3. 원본 테이블의 삽입, 수정, 삭제가 빈번한 경우(*****)

select * from tblAddressBook;

비고유 인덱스

–job은 중복값이 존재하던 컬럼임

–인덱스가 걸린 컬럼 > job > 중복값 존재

>> create index idxIndexJob on tblIndex(job);

고유 인덱스

–인덱스가 걸린 컬럼 > seq > PK, Unique

>> create index idxIndexSeq on tblIndex(seq); — PK라 색인도 중복되지 않는다.

단일 인덱스

–인덱스 걸 컬럼이 1개일때..

>> create index idxIndexEmail on tblIndex(email) email 컬럼에만 index 부여

select * from tblIndex where email = ‘[email protected]’; –> idxIndexEmail동작 -> 빠른속도로 검색

select * from tblIndex where email = ‘[email protected]’ and age = 44; –> idxIndexEmail 동작 X –> 왜냐면 age와 같이 where 절의 조건으로 사용되었기 때문.

결합(다중) 인덱스

>> create index idxIndexEmailAge on tblIndex(email,age); –> 이렇게 해주어야 위의 상황에서 인덱스 효과를 받을 수 있다.

select * from tblIndex where name = ‘김길동’; –idxIndexName 동작 O

select * from tblIndex where substr(name,1,1) = ‘김’; –idxIndexName 동작 X –> 함수로 감싸여졌기 때문에.. –> 즉 순수컬럼값으로만 검색해야한다.

–> create index idxIndexLastName on tblIndex(substr(name,1,1));

select * from tblIndex where (height + weight)>200;

create index idxIndexBMI

on tblIndex((height + weight));

–하나의 테이블에 여러개의 인덱스가 필요할 수 있다.

[Oracle] 오라클 인덱스(Index) 사용법 총정리(생성, 조회, 삭제, 리빌드)

인덱스(Index)란?

인덱스는 데이터베이스 테이블에 있는 데이터를 빨리 찾기 위한 용도의 데이터베이스 객체이며 일종의 색인기술입니다. 테이블에 index를 생성하게 되면 index Table을 생성해 관리합니다. 인덱스는 테이블에 있는 하나이상의 컬럼으로 만들 수 있습니다. 가장 일반적인 B-tree 인덱스는 인덱스 키(인덱스로 만들 테이블의 컬럼 값)와 이 키에 해당하는 컬럼 값을 가진 테이블의 로우가 저장된 주소 값으로 구성됩니다.

인덱스(Index) 사용 예시

인덱스 생성

–문법 CREATE INDEX [인덱스명] ON [테이블명](컬럼1, 컬럼2, 컬럼3…….)

–예제 CREATE INDEX EX_INDEX ON CUSTOMERS(NAME,ADDRESS); –예제 컬럼 중복 X CREATE[UNIQUE] INDEX EX_INDEX ON CUSTOMERS(NAME,ADDRESS);

위와같이 쿼리문을 작성하면 INDEX를 생성할 수 있습니다. UNIQUE 키워드를 붙이면 컬럼값에 중복값을 허용하지 않는다는 뜻입니다.

인덱스 조회

SELECT * FROM USER_INDEXES WHERE TABLE_NAME = ‘CUSTOMERS’; SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME = ‘CUSTOMERS’;

인덱스를 생성하면 USER_INDEXES나 ALL_IND_COLUMNS 에서 조회할 수 있습니다. 방금 CUSTOMERS 테이블에 만들었던 EX_INDEX가 첫번째 ROW에 있군요.

인덱스 삭제

–문법 DROP INDEX [인덱스 명]

–예제 DROP INDEX EX_INDEX;

인덱스는 조회성능을 극대화하기 위해 만든 객체인데 너무 많이 만들면 insert, delete, update시에 부하가 발생해 전체적인 데이터베이스 성능을 저하합니다. 고로 안쓰는 인덱스는 삭제시키는것이 좋습니다.

인덱스명 수정

–문법 DROP INDEX [기존 인덱스 명] TO [바뀔 인덱스 명]

–예제 ALTER INDEX EX_INDEX RENAME TO EX_INDEX_NEW

인덱스 명을 바꾸고 싶다면 위와 같이하시면 됩니다. 참고로 오라클에서 인덱스의 구성 컬럼을 추가하는 것은 ALTER이 불가능합니다. 인덱스를 변경하기 위해서는 삭제 DROP을 한 후 새로 생성 CREATE를 해주어야 합니다.

인덱스(Index) 리빌드(Rebuild)사용 예시

인덱스를 리빌드하는 이유

인덱스 파일은 생성 후 insert, update, delete등을 반복하다보면 성능이 저하됩니다. 생성된 인덱스는 트리구조를 가집니다. 삽입,수정,삭제등이 오랫동안 일어나다보면 트리의 한쪽이 무거워져 전체적으로 트리의 깊이가 깊어집니다. 이러한 현상으로 인해 인덱스의 검색속도가 떨어지므로 주기적으로 리빌딩하는 작업을 거치는것이 좋습니다.

인덱스 리빌드 할 대상 조회쿼리

SELECT I.TABLESPACE_NAME,I.TABLE_NAME,I.INDEX_NAME, I.BLEVEL, DECODE(SIGN(NVL(I.BLEVEL,99)-3),1,DECODE(NVL(I.BLEVEL,99),99,’?’,’Rebuild’),’Check’) CNF FROM USER_INDEXES I WHERE I.BLEVEL > 4 ORDER BY I.BLEVEL DESC

해당쿼리는 index 트리의 깊이가 4이상인 index를 조회하는 쿼리입니다. 해당 쿼리문을 실행하여 검색되는 index가 있다면 리빌딩을 하는것이 좋습니다.

인덱스 리빌드

–문법 ALTER INDEX [인덱스명] REBUILD;

–예제 ALTER INDEX EX_INDEX REBUILD;

위의 쿼리를 실행시키면 인덱스가 리빌드 됩니다. 이렇게 일일히 리빌드 시키기 귀찮으신 분들은 USER_INDEXES에 있는 인덱스를 조회하여 인덱스 리빌드 쿼리를 만들어 한번에 실행시키시면 간편합니다.

전체 인덱스 리빌드 쿼리문 만들기

SELECT ‘ALTER INDEX ‘||INDEX_NAME||’ REBUILD; ‘FROM USER_INDEXES;

인덱스(Index)를 남발하지 말아야 하는 이유

개발을 진행할때에 대개 개발서버와 운영서버를 나누어서 관리합니다. 대부분 개발서버에서 개발을 할때에는 적은량의 데이터를 가지고 로직검사를 하며 로직검사에 통과한 코드들이 운영서버에 업데이트가 되죠. 하지만 개발서버에는 잘 동작하던 로직들이 운영서버의 많은량의 데이터들을 처리하다보면 성능이슈가 많이 발생합니다. 그 성능이슈의 주요원인은 바로 데이터베이스에 있습니다. 데이터베이스 관리자는 성능문제가 발생하면 가장 빨리 생각하는 해결책이 인덱스 추가 생성입니다.

하지만 문제를 그저 쉽게 해결하기 위해 쿼리 속도 문제가 날때마다 인덱스를 추가하는것은 바람직하지 못합니다. 성능 이슈가 나서 인덱스를 만들고 또 다른 SQL에서문에서 성능이슈가 발생하여 또 인덱스를 만들었다고 합시다. 이렇게 문제가 발생할때마다 인덱스를 생성하면서 인덱스가 계속 추가되면 생성된 인덱스를 참조하는 하나의 쿼리문을 빠르게는 만들 수 있지만 전체적인 데이터베이스의 성능 부하를 초래합니다. 그렇기에 인덱스를 생성하는것 보다는 SQL문을 좀 더 효율적으로 짜는 방향으로 나가야합니다. 인덱스생성은 꼭 마지막 수단으로 강구해야 할 문제입니다.

인덱스에 대해 더 자세히 알고 싶다면 아래의 글을 참고해주세요.

[DB] 데이터베이스 인덱스(Index) 란 무엇인가?

[ORACLE] INDEX기본 구조와 사용

반응형

* 인덱스란?

인덱스는 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 오라클 데이터베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조이다. 일종의 색인 기술로써 테이블에 index를 생성하게 되면 index table을 생성해 관리한다. index 생성시 아무 옵션 없이 default로 생성하면 B-Tree index가 생성된다.

– 자동 인덱스 : 프라이머리 키 또는 UINQUE 제한 규칙에 의해 자동적으로 생성되는 인덱스.

가장 기본적인 B-Tree 인덱스로 인덱스 키(인덱스로 만들 테이블의 컬럼 값)

+ 키에 해당하는 컬럼값을 가진 테이블 로우가 저장된 주소로 구성

– 수동 인덱스 : CREATE INDEX 명령을 직접 실행하여 만드는 인덱스

* 인덱스는 언제 사용할까?

1. 구별되는 값이 많은 칼럼

PRIMARY KEY로 지정되는 칼럼에는 UNIQUE한 INDEX가 생성된다. 검색하려는 모든 데이터가 고유한 값이라면, INDEX 구조 내에서도 중복되는 데이터 확인 필요없이 가장 최적화 되어 있는 상태.

2. WHERE절에서 자주 조회되는 칼럼

WHERE절에서 사용이 안된다면 굳이 INDEX를 만들어줄 필요가 없다. STORAGE만 차지하고 사용도 안한다면 없애주어야한다. 중복되는 데이터가 있다고 하더라도 자주 WHERE절의 조건으로 사용되는 칼럼이라면 INDEX SCAN이 효율적이다.

3. 큰 테이블에서 적은 데이터가 필요할 때

위 그림의 재직상태 예시에서 테이블에는 재직 상태에 대한 칼럼이 있는데 이 데이터들 중 재직이 90% 이상을 차지하고, 나머지 상태가 상대적으로 매우 작은 비중을 차지했을때 INDEX에는 NULL값이 들어갈 수 없다는 특징을 사용할 수 있다. INDEX에는 NULL값이 들어갈 수 없으며 재직상태에 INDEX 칼럼을 사용하기 위해 가장 비율을 많이 차지하고 있는 “재직”을 NULL로 INSERT하고 나머지 상태는 따로 구분한다.

이렇게 데이터를 입력해주면, FULL SCAN으로 검색 했더라면 100건을 모두 탐색 했어야하는데 INDEX를 활용해서 5건의 데이터에 대한 INDEX SCAN을 진행하게 된다.

* 인덱스 사용

1. 인덱스 생성

–문법 CREATE INDEX [인덱스명] ON [테이블명](컬럼1, 컬럼2, 컬럼3…….)

–예제 CREATE INDEX EX_INDEX ON CUSTOMERS(NAME,ADDRESS); –예제 컬럼 중복 X CREATE[UNIQUE] INDEX EX_INDEX ON CUSTOMERS(NAME,ADDRESS);

* UNIQUE 옵션 : 인덱스로 설정하는 컬럼값에 중복값을 허용하지 않음

2. 인덱스 조회

SELECT * FROM USER_INDEXES WHERE TABLE_NAME = ‘CUSTOMERS’;

– 인덱스는 USER_INDEXES 시스템 뷰에서 조회할 수 있음

3. 인덱스 삭제

–문법 DROP INDEX [인덱스 명]

– 조회 성능을 높이기 위해 만든 객체지만 저장공간을 많이 차지하며 DDL작업(INSERT, DELETE, UPDATE) 시 부하가 많이 발생해 전체적인 데이터베이스 성능을 저하시킨다. DBA는 주기적으로 INDEX를 검토하여 사용하지 않는 인덱스는 삭제하는 것이 데이터베이스 전체 성능을 향상 시킬 수 있다.

4. 인덱스 리빌드

– 생성된 인덱스는 기본적으로 ROOT, BRANCH, LEAF로 구성된 트리 구조를 가지며 DDL 작업이 오랜시간 발생하면 트리의 하위 레벨이 많아져 트리 구조의 한쪽이 무거워지는(깊어지는) 현상이 생긴다. 이러한 현상은 인덱스의 검색속도를 저하시키고 전체 데이터베이스 성능에 영향을 미친다. 그러므로 주기적으로 INDEX를 리빌딩 하는 작업을 해주어야 한다.

– 성능에 영향을 미치는 index 조회

SELECT I.TABLESPACE_NAME,I.TABLE_NAME,I.INDEX_NAME, I.BLEVEL, DECODE(SIGN(NVL(I.BLEVEL,99)-3),1,DECODE(NVL(I.BLEVEL,99),99,’?’,’Rebuild’),’Check’) CNF FROM USER_INDEXES I WHERE I.BLEVEL > 4 ORDER BY I.BLEVEL DESC

– 인덱스 리빌드

–문법 ALTER INDEX [인덱스명] REBUILD;

–예제 ALTER INDEX EX_INDEX REBUILD;

– 리빌딩 해야하는 인덱스가 많아 일일히 리빌드를 해주기 힘든 경우 USER_INDEXES 딕셔너리에 있는 인덱스를 조회하여 인덱스 리빌드 쿼리를 만들어 한번에 전체 리빌딩을 실행하는 방법이 있다.

— 전체 인덱스 리빌드 쿼리문 SELECT ‘ALTER INDEX ‘||INDEX_NAME||’ REBUILD; ‘FROM USER_INDEXES;

* 인덱스를 사용하는 것이 무조건 좋은가?

– index가 없는 경우 index를 생성하는 컬럼에 따라 full scan이 더 좋은 효율을 가질 수도 있다. 데이터 건수에 따라 소량의 테이블을 조회하는 경우, index를 타는 것 보다 full scan이 더 유리할 수 있다.

– 읽어들이는 블록의 갯수 뿐 아니라 I/O 횟수도 고려해야 한다. index scan은 각 row를 블럭 단위로 읽으므로 I/O 단위는 1블럭이 되며 full scan의 경우 모두 다 읽어야 하지만 DB_FILE_MULTIBLOCK_READ_COUNT 파라미터 설정을 통해 한번에 여러 블럭을 읽어 index scan보다 full scan이 더 효율적일 수 있다.

– 현재까지 여러 오라클 버전이 나오면서 Optimizer 성능 또한 좋아져 오라클 서버가 스스로 실행계획을 비교, 판단하여 유리한 작업으로 진행한다. 따라서 모든 컬럼에 index를 만들어주는 것이 좋은가?

* index를 모든 컬럼에 대해 추가하면 조회 성능은 좋아지겠지만 index는 select 효율을 극대화시키는 목적으로 사용되는 객체이다. 따라서 DDL 작업이 자주 발생하면 index도 함께 수정되어야 하므로 데이터베이스 효율이 급격히 하락할 수 있다. (index가 없으면 그냥 작업이 가능하지만 index가 있으면 정렬되어있는 row들을 DDL 작업 후 새로 데이터를 맞춰 수정하는 작업이 수반된다)

* 또한 index는 하나의 오브젝트 객체로써 저장공간을 필요로 한다. 따라서 select절의 성능 향상을 위해 index를 어느 컬럼을 사용해야 하는 index 컬럼 선정작업 역시 중요하다.

반응형

So you have finished reading the 오라클 인덱스 예제 topic article, if you find this article useful, please share it. Thank you very much. See more: 오라클 인덱스 조회, 오라클 인덱스 구조, 오라클 인덱스 생성, 오라클 인덱스 원리, 오라클 인덱스 사용, 오라클 인덱스 힌트, 오라클 인덱스 여러개, 오라클 인덱스 추가

Leave a Comment