PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Usando uma tabela temporária para substituir uma cláusula WHERE IN


Não há necessidade de se preocupar com o conflito.

O esquema pg_temp é específico da sessão. Se você tiver uma instrução concorrente em uma sessão separada, ela usará um esquema diferente (mesmo que você a veja como tendo o mesmo nome).

Duas notas, porém:

  1. Sempre que você cria objetos temporários, o catálogo do sistema cria um esquema temporário e os próprios objetos. Isso pode causar confusão se usado com frequência.

    Assim, para pequenos conjuntos/usos frequentes, geralmente é melhor manter um in ou um with declaração (ambos os quais o Postgres lida muito bem). Também é ocasionalmente útil "enganar" o planejador para usar qualquer plano que você esteja procurando usando uma função de retorno de conjunto imutável.

  2. No caso de você decidir usar tabelas temporárias, geralmente é melhor indexá-las e analisá-las depois de preenchê-las. Caso contrário, você está fazendo pouco mais do que escrever um with declaração.