2011-05-12 2 views
3

Oracle 11g의 초보자이며 실행 계획과 관련하여 하나의 질문이 있습니다. 쿼리를 실행했는데 쿼리에 ORDER BY 절이 없더라도 실행 계획의 통계는 여전히 메모리에 6 가지 종류가 있음을 보여줍니다. 아무도 왜 이런 일이 일어 났는지 설명해 주시겠습니까? 아래는 검색어 및 통계입니다.정렬 관련 옵티 마이저 통계

SQL> SELECT ZIP FROM NOZIPSORT WHERE ZIP BETWEEN '10000' AND '29999' AND rownum < 26; 

25 rows selected. 

Elapsed: 00:00:00.07 

Execution Plan 
---------------------------------------------------------- 
Plan hash value: 4176934817 

-------------------------------------------------------------------------------- 
| Id | Operation   | Name  | Rows | Bytes | Cost (%CPU)| Time  | 
-------------------------------------------------------------------------------- 
| 0 | SELECT STATEMENT |   | 25 | 150 |  2 (0)| 00:00:01 | 
|* 1 | COUNT STOPKEY  |   |  |  |   |   | 
|* 2 | TABLE ACCESS FULL| NOZIPSORT | 28 | 168 |  2 (0)| 00:00:01 | 
-------------------------------------------------------------------------------- 

Predicate Information (identified by operation id): 
--------------------------------------------------- 

    1 - filter(ROWNUM<26) 
    2 - filter("ZIP"<='29999' AND "ZIP">='10000') 


Statistics 
---------------------------------------------------------- 
     311 recursive calls 
      0 db block gets 
     47 consistent gets 
     38 physical reads 
     520 redo size 
     805 bytes sent via SQL*Net to client 
     431 bytes received via SQL*Net from client 
      3 SQL*Net roundtrips to/from client 
      6 sorts (memory) 
      0 sorts (disk) 
     25 rows processed 
+0

"통계"는 "실행 계획"자체와 관련이 없습니다.이 통계는 쿼리 자체의 실제 통계입니다. 다시 실행하면 실행 계획이 동일하게 유지 되더라도 매번 다른 통계를 볼 수 있습니다. –

답변

3

나는 그것이 몇 가지 정렬을 수행하는 재귀 호출이라고합니다. 쿼리가 구문 분석 될 때 테이블과 열 정의를 확인하기 위해 데이터 사전을 쿼리해야하며 이러한 쿼리 중 일부에는 DISTINCT 또는 정렬이 필요한 다른 작업이 포함됩니다.

관련 문제