> 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
