> Bom dia Pessoal,
> essa tabela tem uns 100 campos e umas 8 fk e 9 indices.
> 
> segue as informações,
> explain:
> 
> "Update on lanccaixa (cost=0.00..197881.30 rows=7166 width=633) (actual
> time=1012846.965..1012846.965 rows=0 loops=1)"
> " -> Seq Scan on lanccaixa (cost=0.00..197881.30 rows=7166 width=633) (actual
> time=25.047..58396.786 rows=1413418 loops=1)"
> " Filter: (flindpag IS NULL)"
> "Trigger for constraint fkdocfiscalser: time=66582.215 calls=1413418"
> "Trigger for constraint fklanccaixaconcor: time=5596.281 calls=1413418"
> "Trigger for constraint fklanccaixaplacon: time=5586.670 calls=1413418"
> "Trigger for constraint fklanccxadocfiscal: time=5274.534 calls=1366084"
> "Trigger for constraint fklanccxcdcentro: time=5480.920 calls=1413418"
> "Trigger for constraint fklanccxhistlanccre: time=5467.979 calls=1413418"
> "Trigger for constraint fklanccxhistlancdeb: time=5400.965 calls=1413418"
> "Trigger for constraint fklcxacdadiant: time=5418.880 calls=1413418"
> "Total runtime: 1119142.220 ms"

Acho que o melhor que você pode fazer aí é usar deferrable constraints.
Você terá de recriar as chaves estrangeiras com uma das opções DEFERRABLE e 
depois iniciar a transação com SET CONSTRAINTS DEFERRED;
Assim, a checagem de restrições será feita apenas na hora do COMMIT, o que 
agiliza o processo em massa.

Outra coisa que você pode fazer na transação é SET synchronous_commit = off;
Mas *só* na transação do UPDATE, não no postgresql.conf.

[]s

__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: [email protected]
______________________________
FREE SOFTWARE SOLUTIONS
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a