PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Utilisation d'une table temporaire pour remplacer une clause WHERE IN

Il n'y a pas besoin de s'inquiéter du conflit.

Le schéma pg_temp est spécifique à la session. Si vous avez une instruction simultanée dans une session distincte, elle utilisera un schéma différent (même si vous la voyez comme ayant le même nom).

Deux remarques cependant :

  1. Chaque fois que vous créez des objets temporaires, le catalogue système crée un schéma temporaire et les objets eux-mêmes. Cela peut entraîner un encombrement s'il est utilisé fréquemment.

    Ainsi, pour les petits ensembles/utilisations fréquentes, il est généralement préférable de s'en tenir à un in ou un with déclaration (les deux avec lesquelles Postgres se débrouille assez bien). Il est également parfois utile de "tromper" le planificateur pour qu'il utilise le plan que vous recherchez en utilisant une fonction de retour d'ensemble immuable.

  2. Dans le cas où vous décidez d'utiliser réellement des tables temporaires, il est généralement préférable de les indexer et de les analyser une fois que vous les avez remplies. Sinon, vous ne faites guère plus que d'écrire un with déclaration.