인덱스를 사용하도록 힌트를 주면 인덱스만
full scan 하는데 이는 테이블보다 크기가 작기 때문에
당연히 속도가 빠르게 나옵니다.
그리고 proc의 sqlca를 사용해서 하더라도
결국은 같은 access path를 통하여
건수를 리턴하기 때문에 시간은 같이 걸릴것입니다.
제가 경험적으로 보기에는 count(*)를 빠르게 하는
방법은 트리거를 사용하던 어떤 다른 방법을 사용하던지
별동의 테이블에 총 건수를 저장하기 전에는 빨라지지는
않을 것 같습니다.
>>이기태 님께서 쓰시길<<
:: 안녕하세요..
::
:: 지금 데이타는 약 34만 정도 고요..
::
:: SELECT COUNT(*) FROM book을 하면 0.5초 정도 나와요
::
:: 위의 SQL의 explain plan 입니다.
:: SELECT STATEMENT,,,0,,
:: SORT,AGGREGATE,,1,0,1
:: TABLE ACCESS,FULL,BOOK,2,1,1
::
:: SELECT /*+ INDEX(book, pk_book) */ COUNT(*) FROM book을 하면 0.15초 정도 나와요
::
:: 위의 SQL의 exlain plan 입니다.
:: SELECT STATEMENT,,,0,,26
:: SORT,AGGREGATE,,1,0,1
:: INDEX,FULL SCAN,PK_BOOK,2,1,1
::
:: 인덱스 쓰게 하면 좀더 빠르게 나오는데요.
:: 인덱스를 쓰게해도 full scan을 하는듯 한데 이런식으로 하지 않고.
::
:: 더 빠르게 할수 있는 방법이 없을까요?
::
:: proc쓸때는 count(*)를 하지 않아도 sqlca가지고 row를 구할수 있었는데
:: php를 막막 하네요 count(*)하는 속도가 넘 느려서 걱정입니다.
::
:: p.s 미쳐가는 한 소년이
|