2020년 7월 19일 일요일

오라클SQL, 대용량 테이블에서의 ORDER BY

오라클SQL, 대용량 테이블에서의 ORDER BY

http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=599

대용량 테이블에서의 ORDER BY

ORDER BY는 데이터를 메모리에 올려놓고 소트를 진행하고 메모리 공간이 부족하면 디스크(임시 테이블스페이스)에 놓고 정렬을 수행하므로, 대용량의 테이블에서는 사용을 자제해야 한다. 인덱스를 적절히 이용하고 오라클 힌트 등을 사용한다면 많은 성능상 이점이 있다.

-- myemp1 테이블은 1000만건 정도 데이터가 있다.

--아래 쿼리를 실행하고 결과를 확인하려면 십여초 있어야 한다.

SQL> select empno, ename, sal from myemp1

order by ename;

--이번에는 적절한 인덱스를 만들고 인덱스 영역에서 데이터를 가지고 올 수 있도록 간단한 오라클 힌트를 사용해 보자. Index 힌트는 인자로 주어진 인덱스 영역에서 데이터를 순방향(ASCENDING)으로 스캔하라는 힌트이다. 실행하면 데이터가 바로 나온다. WHERE절에 ename 컬럼을 출현시키지 않으면 힌트에서 기술한대로 인덱스를 이용하지 못하니 확인해 보라.

SQL>CREATE INDEX IDX_MYEMP1_ENAME ON MYEMP1(ENAME DESC);

SQL> select /*+ index(myemp1 idx_myemp1_ename) */

2 empno, ename, sal

3 from myemp1

4 where ename >= ‘ㄱ’;

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...