본문 바로가기
자격증/정보처리기능사

[정보처리기능사/실기] SQL 인덱스, 뷰, 다중테이블 이론 정리

by me_in_sk 2023. 5. 14.
반응형

인덱스(Index)란?

인덱스란 데이터를 빠르게 찾을 수 있는 수단의 일종으로, 테이블에 대한 조회 속도를 높여주는 자료구조를 의미하는 말이다. 인덱스는 테이블에서 기본키로 지정할 경우 자동으로 생성되는 것으로, 테이블의 특정 레코드 위치를 알려주는 용도로 사용한다. 인덱스는 생성하고 변경하고 삭제하는 등의 작업이 가능하며, 궁극적으로 데이터베이스에서 테이블에 있는 데이터를 빠르게 색인하기 위한 기능이다. 한 번 생성된 인덱스에 대한 변경이 필요한 경우는 드물며, 일부 제품은 인덱스에 대한 변경 SQL문이 없기 때문에, 이 경우 기존의 인덱스를 삭제하고 새로 인덱스를 생성하는 방식으로 사용하는 것을 권고하고 있다. 또한, 인덱스에 관련 명령어에 대한 SQL의 표준이 없기에 제품별 DROP 명령문의 사용법은 약간씩 다르다. 일반적으로 인덱스를 테이블의 종속 구조로 생각하여 인덱스를 삭제하기 위해 테이블의 변경을 가하는 형식의 명령을 사용하는 방식이 쓰인다. 

 

ex) ALTER TABLE <table_name> DROP INDEX <index_name>;

 

 

뷰(View)란?

뷰는 논리 테이블로서 사용자의 사용 관점에서는 테이블과 동일하다. 뷰는 하나의 물리 테이블로부터 생성이 가능하며, 다수의 테이블이나 다른 뷰를 이용하여 만드는 것이 가능하다. 뷰와 같은 결과를 만들기 위해 조인(Join) 기능을 활용할 수 있으나, 기존에 뷰가 만들어져 있다면 사용자는 조인 없이 하나의 테이블을 대상으로 하는 단순한 질의어를 사용할 수 있게 된다. 결국 뷰를 사용하는 주된 이유는 예시와 같이 단순한 질의어를 사용할 수 있기 때문이다. 추가로 뷰는 정의 자체를 변경하는 것은 불가능하며, 일단 뷰를 정의하면, 뷰의 물리적 내용은 뷰의 이름과 데이터를 조회하기 위한 쿼리문일 뿐이다. 이때, 뷰의 이름이나 쿼리문을 변경하는 수단은 제공되지 않으며, 이 경우 뷰의 삭제와 재생성을 통해 뷰에 대한 정의 변경이 가능하다.

 

ex) SELECT * FROM <View_Name>;

      DROP VIEW <View_Name>;

 

 

다중 테이블

관계형 데이터베이스는 데이터의 중복을 최소화하기 위해 데이터를 분해하여 저장하고 통합하여 사용하며, 데이터를 분해하는 방법으로 정규화 기법이 사용되며, 통합하는 기법으로 다중 테이블에 대 검색이 사용된다. 다중 테이블의 이용 기법에는 조인서브 쿼리, 집합 연산 등이 있다. 

조인은 결합을 의미하는 개념으로, 관계형 데이터베이스에서의 조인은 교집합의 결과를 가지는 결합 방법을 의미하며, 두 테이블의 공통값을 이용하여 컬럼을 조합하는 수단으로 사용이 된다. 보통 기본키와 후보키의 값을 결합하여 사용하는 것이 일반적으로, 보다 엄밀하게 살펴본다면 기본키, 후보키와 관계없이 논리적인 값들의 연관을 사용하는 방식이다. 이때 조인은 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능으로 크게 논리적 조인과 물리적 조인으로 구분이 된다. 논리적 조인은 사용자의 SQL문에서 표현되는 테이블 결합 방식으로 두 테이블에 공통으로 존재하는 컬럼을 이용하는 공통 컬럼 기반의 방식이며, 이에는 내부 조인과 외부 조인이 있다. 물리적 조인은 데이터베이스의 옵티마이저에 의해 내부적으로 발생하는 테이블 결합 방식으로 특정 테이블의 모든 데이터를 기준으로 다른 테이블의 정보를 추출한다. 이에는 중첩 반복 조인, 정렬 합병 조인, 해시 조인 등이 있다.

서브 쿼리는 SQL문 안에 포함된 또 다른 SQL문을 의미한다. 서브 쿼리는 알려지지 않은 기준을 검색하기 위해 사용한다. 메인 쿼리와 서브 쿼리 관계는 주종 관계이기 때문에 서브 쿼리에 사용되는 컬럼 정보는  메인 쿼리의 컬럼 정보를 사용할 수 있으나 그 역은 성립되지 않는다. 서브 쿼리는 동작하는 방식이나 반환되는 데이터의 형태에 따라 분류할 수 있는데, 동작 방식에 따라 비연관 서브 쿼리와 연관 서브 쿼리, 데이터 형태에  따라 단일 행, 다중 행, 다중 컬럼 등으로 나눌 수 있다.

집합 연산은 테이블을 집합 개념으로 보고, 두 테이블 연산에 집합 연산자를 사용하는 방식이다. 집합 연산자는 2개 이상의 질의 결과를 하나의 결과로 만들어 준다. 일반적으로 집합 연산자를 사용하는 상황은 서로 다른 테이블에서 유사한 형태의 결과를 반환하는 것을 하나의 결과로 합치고자 할 때와 동일 테이블에서 서로 다른 질의를 수행하여 결과를 합치고자 할 때 사용할 수 있으며, 집합 연산에는 'UNION', 'UNION ALL', 'INTERSECTION', 'MINUS' 등이 있다.

반응형

댓글