Vistas indexadas

27/05/2004 - 11:33 por Asier | Informe spam
Hola grupo,

Tengo una Base de datos con varios procedimientos almacenados y con
varias tablas con sus índices establecidos. Mi duda es que nunca he usado
vistas indexadas y no sé si podría mejorar aún más el rendimiento de mis
aplicaciones. ¿en que casos debo usarlas?

Gracias

Asier
 

Leer las respuestas

#1 Maxi
27/05/2004 - 16:42 | Informe spam
Hola, te copio lo que dice el manual:

Índices de las vistas
Microsoft® SQL ServerT 2000 admite la definición de índices en las vistas.
Las vistas se denominan a veces tablas virtuales porque el conjunto de
resultados que devuelve la vista tiene el mismo formato general que una
tabla con columnas y filas, y en instrucciones SQL es posible hacer
referencia a las vistas de la misma forma que a las tablas. El conjunto de
resultados de una vista no indizada no se almacena permanentemente en la
base de datos. Cada vez que una consulta hace referencia a la vista, SQL
Server mezcla dinámicamente la lógica necesaria para generar el conjunto de
resultados de la vista con la lógica necesaria para generar el conjunto de
resultados completo de la consulta a partir de los datos en las tablas base.
El proceso de generación de los resultados de la vista se llama materializar
la vista. Para obtener más información, consulte Resolución de vistas.

Para una vista no indizada, la sobrecarga de la generación dinámica del
conjunto de resultados por cada consulta que hace referencia a una vista
puede ser importante para las vistas que intervienen en el procesamiento
complejo de un gran número de filas. Los ejemplos incluyen vistas que
agregan grandes cantidades de datos o combinan muchas filas. Si en las
consultas se hace referencia con frecuencia a estas vistas, puede mejorar el
rendimiento mediante la creación de un índice agrupado único en la vista.
Cuando en una vista se crea un índice agrupado único, la vista se ejecuta y
el conjunto de resultados se almacena en la base de datos de la misma forma
que se almacena una tabla con un índice agrupado. Para obtener más
información acerca de la estructura que se utiliza para almacenar índices
agrupados, consulte Índices agrupados.

Otra ventaja de la creación de un índice en una vista es que el optimizador
se inicia utilizando el índice de la vista en las consultas que no nombran
directamente la vista en la cláusula FROM. Las consultas existentes pueden
beneficiarse de la eficiencia mejorada de la recuperación de datos desde la
vista indizada sin tener que volver a codificarse.

Crear un índice agrupado en una vista almacena el conjunto de resultados
generado al mismo tiempo que se crea el índice. Además, una vista indizada
refleja automáticamente las modificaciones realizadas a los datos en las
tablas base después de crear el índice, de la misma forma que lo hace el
índice creado en una tabla base. Según se realizan las modificaciones en los
datos de las tablas base, éstas también se reflejan en los datos almacenados
en la vista indizada. El requisito de que el índice agrupado de la vista sea
único mejora la eficacia con la que SQL Server puede encontrar en el índice
las filas cuyos datos se hayan modificado.

Antes de poder crear un índice en una vista debe haber establecido opciones
SET específicas. El optimizador de consultas no considerará el índice para
las instrucciones SQL subsiguientes, a menos que la conexión que ejecuta la
instrucción tenga la misma configuración de la opción. Para obtener más
información, consulte Opciones SET que afectan a los resultados.

Las vistas indizadas pueden ser más complejas de mantener que los índices en
tablas base. Sólo debe crear índices en vistas donde la mejora de velocidad
en la recuperación de resultados es más importante que la carga incrementada
de realización de modificaciones. Esto ocurre normalmente en las vistas de
datos relativamente estáticos, que procesan muchas filas y a las que se hace
referencia en muchas consultas.

El primer índice creado en una vista debe ser un índice agrupado único.
Después de haber creado el índice agrupado único, puede crear índices no
agrupados adicionales. Las convenciones de nomenclatura para los índices en
las vistas son las mismas que para los índices en tablas. La única
diferencia es que se reemplaza el nombre de la tabla con un nombre de vista.

Todos los índices de una vista se quitan si se quita la vista. Todos los
índices no agrupados de una vista se quitan si se quita el índice agrupado.
Los índices no agrupados se pueden quitar individualmente. Quitar el índice
agrupado en la vista quita el conjunto de resultados almacenado y el
optimizador vuelve a procesar la vista como una vista estándar.

Aunque en la instrucción CREATE UNIQUE CLUSTERED INDEX sólo se especifican
las columnas que conforman la clave del índice agrupado, en la base de datos
se almacena el conjunto de resultados completo de la vista. Al igual que en
un índice agrupado en una tabla base, la estructura de árbol B del índice
agrupado sólo contiene las columnas clave, pero las filas de datos contienen
todas las columnas en el conjunto de resultados de la vista



==


yo por ejemplo las uso mucho en donde necesito una cabecera y detalle y en
la cabecera necesito totales o cosas asi, por ej Stock!! y de verdad que me
han sido muy eficientes.



Suerte





Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Asier" escribió en el mensaje
news:
Hola grupo,

Tengo una Base de datos con varios procedimientos almacenados y con
varias tablas con sus índices establecidos. Mi duda es que nunca he usado
vistas indexadas y no sé si podría mejorar aún más el rendimiento de mis
aplicaciones. ¿en que casos debo usarlas?

Gracias

Asier








Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004

Preguntas similares