sql >> Base de Datos >  >> RDS >> PostgreSQL

Uso de una tabla temporal para reemplazar una cláusula WHERE IN

No hay necesidad de preocuparse por el conflicto.

El esquema pg_temp es específico de la sesión. Si tiene una declaración concurrente en una sesión separada, usará un esquema diferente (incluso si ve que tiene el mismo nombre).

Sin embargo, dos notas:

  1. Cada vez que crea objetos temporales, el catálogo del sistema crea un esquema temporal y los propios objetos. Esto puede generar desorden si se usa con frecuencia.

    Por lo tanto, para conjuntos pequeños/usos frecuentes, por lo general es mejor apegarse a un in o un with declaración (ambos de los cuales Postgres se las arregla bastante bien). Ocasionalmente, también es útil "engañar" al planificador para que use cualquier plan que esté buscando mediante el uso de una función de devolución de conjunto inmutable.

  2. En el caso de que decida usar tablas temporales, generalmente es mejor indexarlas y analizarlas una vez que las haya llenado. De lo contrario, está haciendo poco más que escribir un with declaración.