pessoal, com a ajuda do pessoal aqui na lista eu criei uma store procedure
que calcula o total de registros de cada tabela... com base neles eu
encontrei uma divergencia. deixa eu exemplificar melhor:
para ver o total de registros de uma tabela, normalmente eu uso a função
count:
*rgmadmhospdb_anapolis=# select count(*) from est057;*
* count
--------
287164
(1 registro)*
pela store procedure:
*rgmadmhospdb_anapolis=# SELECT relname, reltuples from pg_class tb INNER
JOIN pg_namespace SCH ON TB.relnamespace = SCH.oid WHERE relname = 'est057';
*
* relname | reltuples
---------+-----------
est057 | 287105
(1 registro)*
segue a store procedure pra ficar mais claro:
CREATE TABLE registros (
tabela char(10) NOT NULL,
total int8,
CONSTRAINT registros_pkey PRIMARY KEY (tabela)
) WITHOUT OIDS;
-- CRIA A FUNÇÃO QUE CONTA OS VALORES
CREATE OR REPLACE FUNCTION contagem() RETURNS text AS $BODY$
DECLARE
recTot RECORD;
sql TEXT;
BEGIN
FOR recTot IN *SELECT relname, reltuples from pg_class tb INNER JOIN
pg_namespace SCH ON TB.relnamespace = SCH.oid WHERE relname not like'pg%'
and nspname='public' AND tb.relkind = 'r'::"char"
* LOOP
EXECUTE 'ANALYZE '||recTot.relname;
sql:= 'INSERT INTO registros VALUES
('''||recTot.relname||''','||recTot.reltuples||')';
EXECUTE sql;
END LOOP;
RETURN 'Acabou!!';
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
-- CHAMA A FUNÇÃO QUE CONTA OS VALORES
SELECT contagem();
Alguém saberia me dizer qual dos dois métodos é o mais correto ?
--
Atenciosamente,
Sebastian Selau Webber Colombo
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios