질문있습니다. 0 7 1,473

by 준 [2008.10.21 15:10:36]


여러 테이블 각각의 레코드수를 구하는 SQL을 만들려고 합니다

제가 생각하기로는 각각 테이블명을 구해서 그 명으로다가 count(*) 이렇게 하면 될 것 같은데...

select count(a) select   table_name a a   from   user_tables;

이렇게 하니 그냥 테이블의 총 수량만 나오더라구요...^^;

각각의 테이블이 있으면 그 안의 레코드 수를 구하는 sql을 만들려고 하는데...^^;

고수님들 부탁드립니다.(아래와 같은 결과를 구하려고 하는거거던요!!^^;)

 

 table_name        레코드 수

테이블1                   10

테이블2                  14

테이블3                    7

 

by 호야 [2008.10.21 15:33:11]
DB의 통계 정보를 만드신 것이 있다면.. 쉽게 자료를 뽑아 올수 있고요
통계정보를 생성하지 않으셨다면..
-_- 죽음의 SQL이 될지도 모릅니다..ㅋㅋ

by 호야 [2008.10.21 15:37:21]
통계 정보가 있는지 한번 테스트 해 보세요

SELECT TABLE_NAME,NUM_ROWS FROM USER_TABLES
여기서 NUM_ROWS 가 NULL이면.. 통계정보 생성이 없다는
겁니다. 근데 이것도 정확한 정보가 될수 없는 것이 통계정보를
만든 시점의 로우수 있기에 현재와 맞지 않습니다..
결국.... 스크립트를 짜야 된다는 결론이 나오는 거죠..ㅎㅎ

by 준 [2008.10.21 15:45:02]
아!~ 그럼 그 로우수를 읽어오기전에 통계정보를 업데이트해서 가져오면 되겠네요? 그러면 통계정보 업데이트는 어떻게 하나여? 자동으로 되는것인지??
아님 commit;이 되면 자동으로 되는 것인지??

by 현 [2008.10.21 15:45:49]
통계정보를 참조하는 것은 반대합니다.
그건 정확한 수치가 될 수 없기 때문이죠.
여러테이블의 정확한 건수를 뽑아야 한다면,
select 'select '''||table_name||''', count(*) from '||table_name||' union all' from user_tables;
이 쿼리로 스크립트를 만드시면 되시구요,
만약 테이블별로 데이터가 있는지 없는지만 확인이 필요하면 다른 방법도 있겠죠..

호야님 말씀대로 죽음의 쿼리가 될 수도 있습니다.

by 김강환 [2008.10.21 15:48:10]
네이버 가셔서 [로우수 구하기]로 검색하시면 네이버 카페 proDBA 쪽 자료가 [특정 스키마가 소유한 테이블의 로우수 구하기 ] 로 검색됩니다.

by 마농 [2008.10.21 15:48:21]
저는 Export 로그 파일을 편집하여 자료를 뽑아냅니다.

by 준 [2008.10.21 15:58:50]
답변 감사합니다!~^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입