티스토리 뷰

위 내용은 업무에 바로 쓰는 SQL 튜닝 중 2장의 인덱스와 뷰를 정리한 글입니다.

인덱스

데이터베이스에서 키값으로 실제 데이터 위치를 식별하고 데이터 접근 속도를 높이고자 생성되는, 키 기준은 정렬된 오브젝트이다. 예를 들어, 천만 건의 데이터가 있는 테이블이 있을 때, 원하는 정보를 찾기 위해 첫 행부터 마지막 행까지 순차적으로 검색하는 방법은 데이터 양이 많아질수록 검색 속도가 급격히 느려지고 비효율적이다. 이러한 문제를 해결하기 위해 인덱스를 사용하면 키워드 기반으로 검색이 가능하여 데이터를 빠르게 찾을 수 있다. 인덱스는 책의 목차와 같은 역할을 하며, DBMS이 효율적인 검색을 수행할 수 있도록 돕다.

고유 인덱스와 비고유 인덱스

고유 인덱스

고유 인덱스는 말그래도 열들의 데이터가 유일하다는 의미이다. 차례로 정렬되는 인덱스 열의 데이터는 서로 중복되지 않고 유일성을 유지한다. 만약 동일 데이터가 삽입 시 중복 체크에서 오류가 발생하며 생성 시 기존 데이터의 중복 여부를 검증하므로 추가 비용이 발생할 수 있다. "ADD UNIQUE INDEX 이름_인덱스" 구문으로 생성한다. 참고로 흔히 거론되는 인덱스는 비고유 인덱스이다.

기본키와 고유 인덱스 차이점

모두 데이터의 유일성을 보장하지만 기본키에는 NULL을 입력할 수 없지만 고유 인덱스는 입력 가능하다.

비고유 인덱스

데이터의 유일한 속성만 제외한 키이다. 데이터가 신규 등록되어도 인덱스가 재정렬되더라도 중복체크를 거치지 않고 단순한 정렬 작업만 수행한다. "ADD INDEX 이름_인덱스" 구문으로 생성한다.


가상 테이블이다. 예를 들어 학생 테이블에 (학번, 이름, 연락처) 컬럼이 있다면 그중 학생_뷰 테이블에는 (학번, 이름)만 조회하도록 생성했다. 서로의 테이블의 데이터가 변경되면 둘 다 적용된다. 연락처를 직접적으로 공개하지 않고도 학생_뷰로 제한된 정보만 제공할 수 있다. 즉 시스템을 안전하게 운영하고 개발할 수 있는 환경을 제공한다.

뷰를 사용하는 이유

일부 데이터에 대해서만 공개, 노출에 민감한 데이터에 대해서는 제약을 설정할 수 있어 보안성에 좋다. 여러 개의 테이블을 병합해서 활용할때 성능을 고려한 최적한 된 뷰를 생성함으로써 일관된 성능을 제공한다.

 

끝.

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함