SQL-Server. Vistas con índices ¿Cuándo no son recomendables?

Añadir un índice a las vistas en SQL-Server puede ser una buena idea para mejorar la velocidad de lectura en consultas sobre la misma, pero en determinados casos puede no ser recomendable ya que el mantenimiento de estos índices penaliza la velocidad en la inserción, borrado y actualización de datos. Me ha pasado que tras crear una vista con varios índices el funcionamiento de la aplicación empeoraba: ganaba dos segundos en la carga de datos pero perdía casi diez en la inserción.

¿En qué casos NO es recomendable crear índices sobre vistas?

  • Sistemas OLTP con muchas operaciones de escritura.
  • Bases de datos con múltiples actualizaciones.
  • Consultas que no requieran de joins o de funciones de agregado.
  • Consultas con agregación de datos con un alto grado de cardinalidad. (Es decir, que el conjunto de datos que devuelve la vista tenga prácticamente el mismo número de líneas que la tabla indizada)
  • Vistas que tienen conjuntos de resultados que son más grandes que los datos originales en las tablas base.

Aquí os dejo un artículo muy interesante, en inglés, sobre el tema. Ya tiene unos años pero los consejos son igualmente válidos.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s