Sí , las vistas pueden tener un índice agrupado asignado y, cuando lo hacen, almacenan resultados temporales que pueden acelerar las consultas resultantes.
Actualización: al menos tres personas me han votado en contra de este. Con el debido respeto, creo que simplemente están equivocados; La propia documentación de Microsoft deja muy claro que las Vistas pueden mejorar el rendimiento.
Primero, las vistas simples se expanden en su lugar y, por lo tanto, no contribuyen directamente a las mejoras de rendimiento; eso es cierto. Sin embargo, las vistas indexadas pueden mejorar drásticamente el rendimiento.
Déjame ir directamente a la documentación:
Después de que se crea un índice agrupado único en la vista, el conjunto de resultados de la vista se materializa inmediatamente y persiste en el almacenamiento físico en la base de datos, ahorrando la sobrecarga de realizar esta operación costosa en el momento de la ejecución.
En segundo lugar, estas vistas indexadas pueden funcionar incluso cuando otra consulta no las haga referencia directamente, ya que el optimizador las usará en lugar de una referencia de tabla cuando sea apropiado.
De nuevo, la documentación:
La vista indizada se puede utilizar en una ejecución de consulta de dos maneras. La consulta puede hacer referencia a la vista indexada directamente o, lo que es más importante, el optimizador de consultas puede seleccionar la vista si determina que la vista puede ser sustituida por una parte o la totalidad de la consulta en el plan de consulta de menor costo. En el segundo caso, se usa la vista indizada en lugar de las tablas subyacentes y sus índices ordinarios. No es necesario hacer referencia a la vista en la consulta para que el optimizador de consultas la use durante la ejecución de la consulta. Esto permite que las aplicaciones existentes se beneficien de las vistas indexadas recién creadas sin cambiar esas aplicaciones.
Esta documentación, así como los cuadros que demuestran las mejoras de rendimiento, se pueden encontrar aquí .
Actualización 2: la respuesta ha sido criticada porque es el "índice" el que proporciona la ventaja de rendimiento, no la "Vista". Sin embargo, esto es fácilmente refutado.
Digamos que somos una empresa de software en un país pequeño; Usaré Lituania como ejemplo. Vendemos software en todo el mundo y mantenemos nuestros registros en una base de datos de SQL Server. Tenemos mucho éxito y, en pocos años, tenemos más de 1,000,000 de registros. Sin embargo, a menudo necesitamos informar las ventas a efectos fiscales y descubrimos que solo hemos vendido 100 copias de nuestro software en nuestro país de origen. Al crear una vista indexada de solo los registros lituanos, podemos mantener los registros que necesitamos en un caché indexado como se describe en la documentación de MS. Cuando ejecutamos nuestros informes de ventas lituanas en 2008, nuestra consulta buscará en un índice con una profundidad de solo 7 (Log2 (100) con algunas hojas no utilizadas). Si hiciéramos lo mismo sin la VISTA y solo confiando en un índice en la tabla, ¡tendríamos que atravesar un árbol de índice con una profundidad de búsqueda de 21!
Claramente, la Vista en sí misma nos proporcionaría una ventaja de rendimiento (3x) sobre el simple uso del índice solo. Intenté usar un ejemplo del mundo real, pero notarás que una simple lista de ventas lituanas nos daría una ventaja aún mayor.
Tenga en cuenta que solo estoy usando un árbol b recto para mi ejemplo. Si bien estoy bastante seguro de que SQL Server utiliza alguna variante de un árbol b, no conozco los detalles. No obstante, el punto es válido.
Actualización 3: surgió la pregunta sobre si una Vista indexada solo usa un índice colocado en la tabla subyacente. Es decir, parafraseando: "una vista indizada es el equivalente de un índice estándar y no ofrece nada nuevo o exclusivo de una vista". Si esto fuera cierto, por supuesto, ¡entonces el análisis anterior sería incorrecto! Permítanme proporcionar una cita de la documentación de Microsoft que demuestra por qué creo que esta crítica no es válida o verdadera:
El uso de índices para mejorar el rendimiento de las consultas no es un concepto nuevo; sin embargo, las vistas indizadas proporcionan beneficios de rendimiento adicionales que no se pueden lograr con índices estándar.
Junto con la cita anterior sobre la persistencia de los datos en el almacenamiento físico y otra información en la documentación sobre cómo se crean los índices en las Vistas, creo que es seguro decir que una Vista indexada no es solo una Selección SQL en caché que utiliza un índice definido en la tabla principal. Por lo tanto, sigo apoyando esta respuesta.