[oracle] COUNT(*) 를 빠르게 하는 방법


[oracle] COUNT(*) 를 빠르게 하는 방법

개발을 하다 보면 페이징 처리를 위해 아래와 같이 COUNT(*)를 해야 할 때가 있다. SQL) SELECT COUNT(*) FROM [테이블명] WHERE [조건] 이 경우 전체 테이블을 FULL SCAN 할 수도 있고 INDEX SCAN을 할 수도 있다. 이 경우 데이터가 많을 경우 많은 시간이 걸릴 수 있다. 만약 인덱스를 SCAN하는데 하나의 블록이 아니라 MULTI BLOCK을 SCAN한다면 당연히 SINGLE BLOCK SCAN보다 빠를 것이다. 이 때 사용하는 것이 INDEX FAST SCAN이다. 사용 방법은 아래와 같다. SQL) SELECT /*+ INDEX([테이블명] [인덱스명]) */ COUNT(*) FROM [테이블명] WHERE [조건]; 사용 예 ) SELECT /*+ INDEX(EMP pk_emp */ COUNT(*) FROM EMP where empno > 0; [참고사항] 위 처럼 HINT를 사용해도 HINT를 무시하고 TABLE FULL SCAN...



원문링크 : [oracle] COUNT(*) 를 빠르게 하는 방법