Acredito que o tempo de resposta do sql que postarei abaixo esta acima do normal (em testes comparativos com Sql Server e Oracle)
abaixo a estrutura de uma tabela com a leitura das vendas de uma empresa
================================================================================
CREATE TABLE leitura_estoque
(
codregistro numeric(4) NOT NULL,
codemitente numeric(4) NOT NULL,
codestabelec numeric(4) NOT NULL,
codproduto numeric(7) NOT NULL,
documento varchar(20) NOT NULL,
codtpdocto varchar(10) NOT NULL,
numitem numeric(3),
guiche numeric(3),
equipamento numeric(4),
dtmovto date,
quantidade numeric(15,4) NOT NULL DEFAULT 0,
preco numeric(15,4) NOT NULL DEFAULT 0,
desconto numeric(12,2),
vendedor numeric(9),
coddepto numeric(4),
tributacao numeric(4),
aliqtributacao numeric(5,2),
hora time,
custocontabil numeric(12,2),
idregistro numeric(9) NOT NULL,
seqleitura numeric(9) NOT NULL,
cupom varchar(6),
aliqreducao numeric(5,2),
pontos numeric(9,2) DEFAULT 0,
funcao numeric(4),
piscofins numeric(1),
lucratividade numeric(15,2) NOT NULL DEFAULT 0,
totitem numeric(15,4) NOT NULL DEFAULT 0,
CONSTRAINT leitura_estoque_pk PRIMARY KEY (seqleitura),
CONSTRAINT leitura_estoque_estabelec_fk FOREIGN KEY (codemitente, codestabelec)
REFERENCES estabelecimento (codemitente, codestabelec) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH OIDS TABLESPACE "GST_TSAux1";
ALTER TABLE leitura_estoque OWNER TO postgres;
-- Index: idx_leitura_estoque_produto
-- DROP INDEX idx_leitura_estoque_produto;
CREATE INDEX idx_leitura_estoque_produto
ON leitura_estoque
USING btree
(codemitente, codestabelec, dtmovto, codproduto);
-- Index: idx_leitura_estoque_produtopdv
-- DROP INDEX idx_leitura_estoque_produtopdv;
CREATE INDEX idx_leitura_estoque_produtopdv
ON leitura_estoque
USING btree
(codemitente, codestabelec, dtmovto, equipamento, codproduto);
-- Trigger: trg_altcusto on leitura_estoque
-- DROP TRIGGER trg_altcusto ON leitura_estoque;
CREATE TRIGGER trg_altcusto
AFTER UPDATE
ON leitura_estoque
FOR EACH ROW
EXECUTE PROCEDURE stpr_altcustovenda();
-- Trigger: trg_leitura_estoque on leitura_estoque
-- DROP TRIGGER trg_leitura_estoque ON leitura_estoque;
CREATE TRIGGER trg_leitura_estoque
AFTER INSERT OR UPDATE OR DELETE
ON leitura_estoque
FOR EACH ROW
EXECUTE PROCEDURE stpr_prodresumo();
-- Trigger: trg_leitura_estoque_ultvenda on leitura_estoque
-- DROP TRIGGER trg_leitura_estoque_ultvenda ON leitura_estoque;
CREATE TRIGGER trg_leitura_estoque_ultvenda
AFTER INSERT
ON leitura_estoque
FOR EACH ROW
EXECUTE PROCEDURE stpr_leitura_estoque_ultvenda();
================================================================================
ABAIXO O RESULTADO DO VACUUM PARA ESTA TABELA
INFO: vacuuming "public.leitura_estoque"
INFO: index "leitura_estoque_pk" now contains 95739453 row versions in 397771 pages
DETAIL: 157614 index row versions were removed.
265 index pages have been deleted, 0 are currently reusable.
CPU 10.02s/21.19u sec elapsed 196.57 sec.
INFO: index "idx_leitura_estoque_produto" now contains 95742096 row versions in 735192 pages
DETAIL: 157614 index row versions were removed.
30 index pages have been deleted, 0 are currently reusable.
CPU 22.84s/25.90u sec elapsed 1679.85 sec.
INFO: index "idx_leitura_estoque_produtopdv" now contains 95747773 row versions in 963391 pages
DETAIL: 157614 index row versions were removed.
3 index pages have been deleted, 0 are currently reusable.
CPU 28.82s/25.80u sec elapsed 1915.30 sec.
INFO: "leitura_estoque": removed 157614 row versions in 16495 pages
DETAIL: CPU 1.06s/0.58u sec elapsed 104.05 sec.
INFO: "leitura_estoque": found 157614 removable, 95736585 nonremovable row versions in 4069552 pages
DETAIL: 0 dead row versions cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 100.55s/82.69u sec elapsed 4715.99 sec.
INFO: analyzing "public.leitura_estoque"
INFO: "leitura_estoque": scanned 3000 of 4070155 pages, containing 70572 live rows and 0 dead rows; 3000 rows in sample, 95746326 estimated total rows
Query returned successfully with no result in 4732938 ms.
=================================================================================
ABAIXO A sql query
select sum(TotItem) as Total, sum(Quantidade * CustoContabil) as Custo, sum(Desconto) as Desconto
from Leitura_Estoque
where CodEmitente = 1 and CodRegistro = 3
and DtMovto between '01/01/2008' and '31/08/2008'
and CodEstabelec = 3
=================================================================================
<- em 10 minutos e 66 segundos ----> em um IBM com 8 GB de memória, 2 processadores Zion: 4.2 Ghz
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
