-
short query , long query 란 무엇인가? sql최적화 팁 - 수정중데이터베이스/postgresql 2024. 5. 13. 13:49728x90반응형
첫 번째 단계는 쿼리가 짧은 쿼리인지 긴 쿼리인지 식별하는 것입니다. 이 장에서는 짧은 쿼리를 최적화하는 데 중점을 둡니다. 짧은 쿼리를 식별하는 방법, 짧은 쿼리에 사용할 최적화 기술, 이 쿼리 유형에 인덱스가 매우 중요한 이유를 배우게 됩니다. 또한 PostgreSQL에서 사용할 수 있는 다양한 유형의 인덱스와 각 인덱스 유형을 사용할 수 있는 경우에 대해서도 설명합니다. 이 챕터를 진행하기 전에 몇 가지 추가 인덱스를 만들어 보겠습니다
SELECT d.airport_code AS departure_airport, a.airport_code AS arrival_airport FROM airport a, airport d
Long query 1-1
SELECT f.flight_no, f.scheduled_departure, boarding_time, p.last_name, p.first_name, bp.update_ts as pass_issued, ff.level FROM flight f JOIN booking_leg bl ON bl.flight_id = f.flight_id JOIN passenger p ON p.booking_id=bl.booking_id JOIN account a on a.account_id =p.account_id JOIN boarding_pass bp on bp.passenger_id=p.passenger_id LEFT OUTER JOIN frequent_flyer ff on ff.frequent_flyer_id=a.frequent_ flyer_id WHERE f.departure_airport = 'JFK' AND f.arrival_airport = 'ORD' AND f.scheduled_departure BETWEEN '2020-08-05' AND '2020-08-07'
Short Query 1-2
SELECT avg(flight_length), avg (passengers) FROM (SELECT flight_no, scheduled_arrival -scheduled_departure AS flight_length, count(passenger_id) passengers FROM flight f JOIN booking_leg bl ON bl.flight_id = f.flight_id JOIN passenger p ON p.booking_id=bl.booking_id GROUP BY 1,2) a
Long Query 1-3
Short Query
쿼리 질의에 대한 결과를 얻기위해 데이터를 찾는 횟수를 최소화할때 짧은 쿼리라 한다.
(1-2) 쿼리에서 flight 로우수가 20만개라고 치면 현 flight에서 20만개 약 200,000개의 항공편 중 단 몇 개의 항공편에서 얻은 데이터가 필요하기 때문이다.
Long Query
쿼리 질의에 대한 결과를 얻기 위해 데이터를 찾는 횟수가 최대일경우 롱 쿼리라 한다.
(1-1) 결과를 얻으려면 airport 테이블의 모든 행이 필요하기 때문이다
즉, 최적화 목표는 가능한 한 빨리 결과 집합의 크기를 줄이는 것입니다. 쿼리 실행의 첫 번째 단계에서 가장 제한적인 선택 기준을 적용하면 추가 정렬, 그룹화 및 조인 비용이 적게 듭니다. 실행 계획을 살펴보면 큰 테이블의 테이블 스캔이 없어야 합니다. 작은 테이블의 경우 3장의 그림 2-3에 표시된 것처럼 전체 스캔이 계속 작동할 수 있습니다
외래키
외래 키는 참조 무결성 제약 조건입니다. 자식 테이블(즉, 외래 키 제약 조건이 있는 테이블)의 null이 아닌 각 값에 대해 부모 테이블에 일치하는 고유 값이 있음을 보장합니다
인덱스 생성 판단
인덱스는 인덱스를 생성할 칼럼에 있는 값에 중복된 데이터가 최소로 있을경우 인덱스를 생성한다.
예를들어 시퀀스 -> 하당 시퀀스 번호는 고유한값이므로 그자체로 로우를 식별가능하니 생성한다.
칼럼 값이 2개의 값으로만 되어있을경우 0 또는 1, 이와 같은 경우에는 인덱스를 생성해도 별다른 효과를 발휘하지 못한다.
728x90반응형'데이터베이스 > postgresql' 카테고리의 다른 글
postgresql 에서 FSM 은 무엇인가? (0) 2024.10.14 postgresql 실행계획 - recheck cond - 수정중 (0) 2024.05.16 POSTGRES 테이블 인덱스 - 정리 (0) 2024.05.10 postgresql - where 절 사용법 (1) 2024.01.11 postgresql - order by 사용법 (1) 2024.01.10