Netezza에는 몇 개의 큰 테이블이 있습니다 (수십 메가 바이트의 데이터).Netezza는 메타/시스템 테이블을 사용하여 큰 테이블의 행 수를 얻습니다.
시스템/메타 테이블을 사용하여이 테이블의 행을 계산하는 방법을 찾으려고합니다.
은 내가 사용할 수 있습니다 알고
SELECT COUNT(*) FROM tablename;
하지만 그 느리고 Netezza의 어플라이언스에 부하를 많이 넣습니다. 정기적으로 이러한 큰 테이블의 행을 계산해야하므로 실행중인 다른 중요한 쿼리의 성능에 영향을 미치고 싶지 않습니다. 거의 작동
SELECT RELNAME TABLE_NAME,
CASE
WHEN RELTUPLES < 0
THEN ((2^32) * RELREFS) + ((2^32) + RELTUPLES)
ELSE ((2^32) * RELREFS) + (RELTUPLES)
END NUM_ROWS
FROM
_T_CLASS,
_T_OBJECT
WHERE
_T_OBJECT.OBJID=_T_CLASS.OID AND
_T_OBJECT.OBJCLASS=4905 — DISPLAY ONLY TABLES
AND RELNAME = UPPER('<TABLE NAME>');
:
나는이 쿼리를 발견했다. 이 쿼리의 문제점은 업데이트/삭제 된 행이있을 수 있다는 사실을 다루지 않는다는 것입니다.Netezza는 정리가 발생할 때까지 데이터베이스에서 삭제 된 행을 유지하므로 행 수가 잘못 표시됩니다.
삭제 된 행을 고려하여 정확한 행 수를 제공하는 쿼리가 있습니까?