2014-02-07 3 views
1

다음 불일치에 혼란 스럽습니다.Num_Rows 및 개수가 일치하지 않습니다.

Select table_name, Num_Rows 
from all_tables 
where OWNER = 'OWNER_NAME' and table_name='TABLE_NAME1'; 

결과는 401입니다.

select count(*) from TABLE_NAME1 

200입니다. 그리고 TABLE_NAME2을 시도한 경우 모두 동일한 값을 반환합니다.
여기 무슨 일입니까?

+0

반대 한 세션이있을 수 있습니까? 한 세션에서 TABLE_NAME1에서 레지스트리를 삭제하고 커밋하지 않은 것일 수 있습니다. –

+0

테이블에 대한 STATS가 오래되어 아직 새로 고침되지 않았습니다. Dbms_stats 패키지를 사용하여 테이블을 분석하려고 할 수 있습니다. –

+0

@JorgeCampos : 단 하나의 세션 만 열렸습니다. – NaaN

답변

5

ALL_TABLES.NUM_ROWS (또는 USER_TABLES.NUM_ROWS)의 값은 dbms_stats.gather_table_statsanalyze table ... 또는 절차에 의해 생성 된 통계 정보이다. 실시간 정보가 아니라 정확하지 않습니다.

이러한 통계 값은 오라클 최적화 프로그램에서 SQL 문의 비용을 계산하고 실행 계획을 선택하는 데 사용됩니다.

+0

'dba_tables'도 똑같은 일이 일어나고 있습니까? – NaaN

+0

@tailorBird 맞습니다. – ntalbs

관련 문제