Esta duda se puede tratar de diferentes formas, pero en este caso te dejamos la respuesta más completa en nuestra opinión.
Solución:
Si la consulta es “larga” y accede a los resultados de varias consultas, la mejor opción es una tabla temporal.
Una vista, en general, es solo un atajo para un select
declaración. Si no implica que los resultados se ejecuten y procesen alguna vez. Si usa una vista, los resultados deberán regenerarse cada vez que se use. Aunque las ejecuciones posteriores de la vista pueden ser más eficientes (por ejemplo, porque las páginas utilizadas por la consulta de vista están en caché), una tabla temporal almacena los resultados.
En SQL Server, también puede usar variables de tabla (declare @t table . . .
).
El uso de una tabla temporal (o variable de tabla) dentro de un solo procedimiento almacenado parecería tener pocas implicaciones en términos de seguridad, simplicidad y nombres de columna. La seguridad se manejaría mediante el acceso al procedimiento almacenado. Se necesitan nombres de columna para cualquiera de las soluciones. La simplicidad es difícil de juzgar sin más información, pero nada se destaca por ser particularmente complicado.
depende
Una vista debe replicar el procesamiento de su “consulta larga” cada vez que se ejecuta, mientras que una tabla temporal almacena los resultados.
Entonces, ¿quieres usar más procesamiento o más almacenamiento?
Puede almacenar algunos valores de vista (índice persistente) que podrían ayudar en el procesamiento, pero no proporciona suficiente información para explorar esto realmente.
Si está hablando de simplemente almacenar los datos para su uso dentro de una sola llamada de procedimiento, entonces una tabla temporal es el camino a seguir.
También me gustaría mencionar que para la tabla temporal,
No puede hacer referencia a una tabla TEMPORAL más de una vez en la misma consulta.
Esto hace que la tabla temporal sea un inconveniente para los casos en los que desea utilizar la unión automática en ella.
Eres capaz de añadir valor a nuestra información añadiendo tu veteranía en las explicaciones.