- random access
- 의미
- row id로 테이블을 액세스 하는 행위
- 적절한 인덱싱과 조인 방법을 사용하였다면 random access가 줄어듦
- 인덱스를 사용하면 rowid가 자동으로 획득됨
- 인덱스에 없는 칼럼을 select해야하는 경우 rowid로 테이블을 액세스 해야 함
- 테이블 액세스할 건이 많고, 인덱스 칼럼 순으로 테이블이 정렬되어있지 않다면 성능이 저하됨
- 테이블이 인덱스 기준으로 정렬되지 않았기 때문에 조회할 때마다 다른 블럭을 읽어야 하기때문
- 해결 방법
- 테이블 종류 변경
- iot나 클러스터를 이용하면 clustering factor가 극단적으로 개선됨
- 파티션을 이용해 같은 범위의 데이터를 밀집시킬 수 있음
- 효율적인 인덱스나 조인방법과 순서를 조정
- 인덱스에 칼럼을 추가해 테이블 액세스 방지
- 특정 칼럼때문에 테이블이 액세스되는 경우 인덱스의 마지막에 칼럼 추가하면 해결됨
- 테이블 종류 변경
- 의미
- scalar subquery
SELECT
절에 사용하는 서브쿼리로 단순한JOIN
을 대체하는 목적으로 사용- 풀스캔을 유발하여 성능면에서 저하되기때문에
JOIN
사용이 가능한 경우JOIN
을 쓰는 것이 나음
- hash join
- 양쪽 테이블 모두
JOIN
할 칼럼에 인덱스가 없는 경우 사용 (자주 사용하지 않고, 쿼리 수행시간이 오래 걸릴 때)
- 양쪽 테이블 모두
- trigger
- 특징
- 이벤트가 발생할 때 마다 자동으로 수행되는 프로시저
- 데이터베이스에 저장됨 (=global)
- 복잡한 cascading의 역할을 함
- sentense
- 단 1회 실행함
FOR EACH ROW
옵션 사용 안함
- row
- 조건을 만족하는 여러 행에 트리거를 여러번 실행함
FOR EACH ROW
옵션 사용
- 특징
- model
- 차원 데이터를 보기 좋게 보기 위해 사용
- window function
- 분석함수 중
WINDOWING
절과 함께 사용하는 함수 PARTITION BY
에 명시된 그룹을 더 디테일하게 그루핑 가능
- 분석함수 중