2011-05-13 14 views
20

¿Alguien tiene un buen árbol de decisión para decidir cuándo usar una vista y cuándo usar una función con valores de tabla en SQL Server?¿Vista del servidor SQL o función de valor de tabla?

+2

Tal vez, podría volver a formular la pregunta. Puedo lograr fácilmente lo que necesito hacer usando una función de vista o tabla. ¿La regla general para usar una vista entonces? – Striker

+1

Sí, si es una vista normal real y no está utilizando trucos de fantasía como OPENROWSET o CONTEXT_INFO. –

+5

Véase también [función de valor de tabla frente a vista] (http://stackoverflow.com/questions/4960137/table-valued-function-vs-view/4960468#4960468) –

Respuesta

2

Hay ciertas cosas que no puede hacer en una vista (como variables de tabla, resultados intermedios antes de devolver el conjunto de resultados, etc.) ... si no las necesita, vea, si lo hace , sproc/udf :-)

-1

Ok, daré el uso que hacemos. Tenemos las tablas, pero nunca accedemos a las tablas, sino a las vistas sobre las tablas. Es solo un problema de seguridad.

13

Aunque cualquier vista se puede convertir casi trivialmente en una función en línea con valores de tabla, lo contrario no es cierto.

Si la construcción necesita ser parametrizada, entonces use una función en línea con valores de tabla. Las funciones de valores de tabla en línea son básicamente vistas parametrizadas en términos de que el optimizador puede combinarlas con vistas e impulsar las cosas. Las funciones con valores de tabla multi-enunciados no se parecen en nada a las funciones en línea con valores de tabla.

Si no puede hacerlo con una función en línea con valores de tabla, use una función de valores de tabla multi-instrucción.

Cuestiones relacionadas