2009/8/4 paulo matadr <[email protected]>: > Olha pessoal, > Eu to com esse delete na maior tabela do meu banco: > delete from cobranca_documento_item where cnta_id in (select cnta_id from > conta_geral where cntg_ichistorico=3) > que ta sendo muito custoso para nosso ambiente,no analyze > Hash IN Join (cost=444791.95..11042547.76 rows=1390453 width=6) > Hash Cond: (cobranca_documento_item.cnta_id = conta_geral.cnta_id) > -> Seq Scan on cobranca_documento_item (cost=0.00..5242127.64 > rows=245865664 width=10) > -> Hash (cost=438290.02..438290.02 rows=373994 width=4) > -> Bitmap Heap Scan on conta_geral (cost=7278.42..438290.02 > rows=373994 width=4) > Recheck Cond: (cntg_ichistorico = 3) > -> Bitmap Index Scan on xix1_conta_geral (cost=0.00..7184.92 > rows=373994 width=0) > Index Cond: (cntg_ichistorico = 3) > > Estrutura: > -Fk de cobranca_documento_item pra conta_geral ligando os campos cnta_id > -Index para cnta_id em cobranca_documento_item(nao usando neste explain) > -cnta_id em conta_geral é uma pk > -Index para cntg_ichistorico em conta_geral( xix1_conta_geral) > > Existe uma maneira de fazer um delete mais otimizado n qual nao haja seqscan > em cobranca_documento_item ? >
Tente: DELETE FROM cobranca_documento_item USING conta_geral WHERE cnta_id = conta_geral.cnta_id AND conta_geral.cntg_ichistorico = 3; Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
