본문 바로가기
DataBase

인덱스, 뷰, 스토어드 프로시저란?

by 깐니 2022. 1. 16.

인덱스 (Index) 란 ?
인덱스는 데이터베이스를 조회 속도를 빠르게 해주는 개체이다.


예를 들어, 회원테이블 member에서 member_name이 아이유인 데이터를 조회한다고 하자.
인덱스가 없으므로 dbms는 Full Table Scan 을 한다.
전체 테이블 검색을 통해 테이블에 있는 모든 데이터를 조회하여, 해당 데이터를 찾는다.

여기에 member_name 열에 대한 인덱스를 지정해보자.
dbms는 Index Scan을 하게 된다.
요약하자면, 인덱스는 B-tree 구조를 가지는데, 각 노드에는 db 데이터의 주소를 가지고 있다.
그렇기 때문에 루트노드부터 리프노드까지 하향식 검색을 하며 데이터를 찾기때문에 빠른 속도로 해당 데이터를 찾는다.
반면 단점으로는, 인덱스를 만들면 데이터의 주소를 가지는 추가 저장 공간도 필요하고,
데이터 변경작업이 빈번하게 일어나는 테이블의 경우, 인덱스를 걸어둔 컬럼의 데이터가 바뀌면, 해당 인덱스 테이블의 수정도 필요하기 때문에 오히려 성능이 낮아질 수도 있다는 점이 있다.

따라서 인덱스는,
- 규모가 작지 않은 테이블
- 데이터 변경 (insert/ update/ delete)가 자주 발생하지 않는 컬럼
- 데이터 중복도가 낮은 컬럼
- join / where 절/ order by 에 자주 사용되는 컬럼 에 사용하면 조회 성능을 높일 수 있다는 장점이 있다.


뷰 (View) 란 ?
뷰는 가상의 테이블이다.
뷰는 테이블과 달리 실제 데이터를 가지고 있는 것이 아니라, 뷰에 접근하는 순간 select 문이 실행되고, 그 결과가 화면에 출력되는 방식이다.
뷰는 특정 사용자가 테이블에 접근하지 못하게 하고, 필요한 부분에만 접근하도록 함으로 보안에 도움이 된다는 장점이 있다.


스토어드 프로시저 (Stored Procedure) 란 ?
스토어드 프로시저는 SQL 에서 제공하는 프로그래밍 기능이다.
여러 개의 SQL문을 하나로 묶어서 편리하게 사용하거나, 연산식, 조건문, 반복문 등도 사용할 수 있어서, 일반 프로그래밍 로직을 코딩할 수 있도록 하는 개체이다.