PostgreSQL

*[pSQL] 뷰와 인덱스

keartt 2023. 1. 26. 00:17
반응형

의미있는 데이터를 조회하기 위해 사용했던 복잡한 쿼리문들

> 매번 작성한다면 생산성이 떨어지고 오류가 발생할 수 있는 문제를 해결해, SQL 구문을 깔끔하게 유지하도록 돕는 것

 

기존에 만든 쿼리문을 하나의 가상 테이블로 만들어 두었다가 필요한 곳에 적절히 사용하는 기능 

새로만든 뷰가 참조하는 뷰에 영향을 주지 않는 한 계속 확장 가능

뷰 > 뷰 > 뷰 >>...

 

뷰는 실제 테이블이 아니라 가상의 테이블, 뷰를 제거한 후에 참조한 테이블 삭제 가능 

CREATE VIEW 이름 AS
SELECT 컬럼 FROM 기존데이터

인덱스

  1. 인덱스는 테이블에 대한 검색 속도를 높이기 위한 자료구조
  2. 특정 컬럼에 인덱스를 생성하면 해당 컬럼에 대한 데이터를 특정 조건(정렬 등) 기준으로 인덱스 자료구조를 생성
  3. 인덱스를 생성하고 인덱스 생성에 사용된 컬럼을 쿼리 조건 등에 사용하게 되면 DB 내부 옵티마이저를 통해 인덱스를 활용한 실행계획이 생성되어 조회에 사용된다.
    1. 옵티마이저 : 쿼리의 최적화된 실행 계획을 찾기 위해 두뇌 역할을 하는 데이터베이스의 엔진

-종류

  • B-tree : 가장 기본적으로 사용되는 인덱스로 트리 형태의 자료구조로 되어있다. 기본키 생성 시 만들어지는 인덱스이다.
CREATE INDEX name ON table (column_name);
  • Hash : Hash 테이블 형태의 Key, Value를 가지는 자료구조 형태로 되어있다.
CREATE INDEX name ON table USING HASH (column_name);
  • GIN(Generalized Inverted Index) : 역색인 방식으로 Full-Text Search, GIN 인덱스를 통해 json 데이터 컬럼에 index 적용이 가능하다. 또한, Full-text Search 이므로 like 검색 등 더욱 다양한 검색 조건에서도 Index 스캔이 가능하다. PostgreSQL을 사용하게 된 계기가 된 인덱스이다.
CREATE INDEX name ON table USING GIN (column_name gin_trgm_ops);

 

반응형