페이징 처리 기능을 구현하면서 OFFSET 방식과 ROW_NUMBER 방식 중 어떤 방식이 쿼리 성능에 더 좋을지 고민하다 성능 테스트를 해보았다.
DBeaver로 테스트를 진행하게 되어서 정리 해보려 한다.
- 테스트할 쿼리를 작성한 후 Ctrl + Shift + E를 누르면 실행 계획을 볼 수 있는 팝업창이 뜬다.
- 이때 ANALYZE, COSTS, TIMING 옵션을 체크한 후 실행하면 보다 정확한 실행 계획을 확인할 수 있다.
🔹ANALYZE
: 실제 쿼리를 실행하여 실행 시간과 row 수 등을 측정
🔹COSTS
: 쿼리의 비용 정보(cost)를 출력
🔹TIMING
: 각 단계별 실행 시간을 출력
- Node Type: sql을 실행시키는 각각의 단계
- Entity: 조회하는 테이블
- Cost: sql 실행하는 데 걸린 비용
- Time: sql 실행하는 데 걸린 시간
- Rows: sql 실행하면서 가져오는 row 수
- Condition: sql 실행 조건문
💡 쿼리 앞에 EXPLAIN ANALYZE를 붙여서 SQL 실행 계획을 확인하는 방법도 있다.
(이 방법은 DBeaver 뿐 아니라 대부분의 SQL 클라이언트에서 사용할 수 있다.)
✔️ 현재는 데이터 수가 적어 정확한 성능 비교가 어려웠지만, 대용량 데이터를 삽입한 후 다시 한 번 테스트를 진행해볼 계획이다.
✔️ 다음엔 OFFSET 방식과 ROW_NUMBER 방식의 차이점, 그리고 어떤 상황에서 더 적합한지에 대해 포스팅해보려 한다 😊
'DataBase > STUDY' 카테고리의 다른 글
[Oracle] 오라클 인덱스(Index) 사용방법 (1) | 2024.09.25 |
---|---|
[DataBase] 트랜잭션(Transaction)이란? (0) | 2024.07.16 |
[Oracle] Docker를 이용한 Oracle 설치 (2) | 2024.06.13 |