Atualizar instrução usando uma cláusula WHERE que contém colunas com valores nulos

Estou atualizando uma coluna em uma tabela usando dados de outra tabela. oWHERE A cláusula é baseada em várias colunas e algumas delas são nulas. Do meu pensamento, esses nulos são o que sãothrowing off seu padrãoUPDATE TABLE SET X=Y WHERE A=B declaração.

Vejoeste violino SQL das duas tabelas em que estou tentando atualizartable_one com base em dados detable_two. Atualmente, minha consulta é assim:

UPDATE table_one SET table_one.x = table_two.y 
FROM table_two
WHERE 
table_one.invoice_number = table_two.invoice_number AND
table_one.submitted_by = table_two.submitted_by AND
table_one.passport_number = table_two.passport_number AND
table_one.driving_license_number = table_two.driving_license_number AND
table_one.national_id_number = table_two.national_id_number AND
table_one.tax_pin_identification_number = table_two.tax_pin_identification_number AND
table_one.vat_number = table_two.vat_number AND
table_one.ggcg_number = table_two.ggcg_number AND
table_one.national_association_number = table_two.national_association_number

A consulta falha para algumas linhas nessetable_one.x não está sendo atualizado quando qualquer uma das colunas em qualquer tabela énull. ou seja, ele só é atualizado quando todas as colunas têm alguns dados.

Esta questão está relacionada à minha anterioraqui no SO onde eu estava obtendo valores distintos de um grande conjunto de dados usandoDistinct On. O que eu quero agora é preencher o grande conjunto de dados com um valor da tabela que possui campos exclusivos.

ATUALIZAR

Usei a primeira instrução de atualização fornecida pelo @binotenary. Para mesas pequenas, é executado rapidamente. Exemplo é uma tabela com 20.000 registros e a atualização foi concluída em 20 segundos. Mas outra tabela com mais de 9 milhões de registros está em execução há 20 horas! Veja abaixo a saída paraEXPLAIN função

Update on table_one  (cost=0.00..210634237338.87 rows=13615011125 width=1996)
  ->  Nested Loop  (cost=0.00..210634237338.87 rows=13615011125 width=1996)
    Join Filter: ((((my_update_statement_here))))
    ->  Seq Scan on table_one  (cost=0.00..610872.62 rows=9661262 width=1986)
    ->  Seq Scan on table_two  (cost=0.00..6051.98 rows=299998 width=148)

oEXPLAIN ANALYZE opção demorou também para sempre, então eu a cancelei.

Alguma idéia de como tornar esse tipo de atualização mais rápida? Mesmo que isso signifique usar uma instrução de atualização diferente ou até mesmo usar uma função personalizada para percorrer e fazer a atualização.

questionAnswers(5)

yourAnswerToTheQuestion