1 comentario

Indices SQL Server


Consejos sobre como implementar indices eficientes en nuestras bases de datos de SQL Server.

  • Cada indice puede tener hasta 16 columnas. Con SQL Server 2005 y versiones superiores, se puede incluir columnas que no sean llaves dentro del indice.  Esto es particularmente util para acelerar querys con numerosos criterios en la clausula WHERE.  ademas puedes utilizar tipos de datos que no eran soportados como index keys, tales como varchar(max), varbinary(max), text, image y ntext el total de un indice no puede exceder los 900 bytes, pero el tamaño de las columnas incluidas no influyen en la cuenta del limite. la sintaxis para incluir columnas con indices non clustered es la siguiente:
  • CREATE NONCLUSTERED INDEX index_name ON table_or_view_name (index_key1, index_key2) INCLUDE (non_key_column1,

non_key_column2)

  • Cada tabla deberia tener al menos un indice clustered.  Un indice clustered determina el orden en cual los datos seran fisicamente ordenados. solo puedes tener un indice clustered por tabla. Si una tabla no tiene indice clustered entonces los datos seran guardados de una forma desordenada es decir como una estructura HEAP.
  • Cree indices non clustered para las columnas referenciadas en la clausula WHERE de un query en particular.  Cubrir en un indice las columnas que se encuentran en la clausula WHERE de un query puede significar el aceleramiento de las consultas por que el motor no tiene que escanear la tabla completa o el indice, en ves de esto solo busca el criterio especificado en la clausula WHERE dentro del indice non clustered la sintaxis es la siguiente:

CREATE NONCLUSTERED INDEX nombre_indice ON nombre_tabla_o_vista(column1,column2….)

 

  • Tener las estadisticas actualizadas ayudan al rendimiento y ayudan al optimizador de consultas a tomar mejores desiciones.  Por default SQL Server actualiza las estadisticas automaticamente en cada indice en cada tabla. SQL Server checa la tabla del sistema sysindexes para decidir si las estadisticas estan desactualizadas. Para decidir es tiempo de refrescar las estadisticas, SQL Server examina el valor de la columna rowmodctr. Esta columna muestra el numero total de filas insertadas, actualizadas o borradas desde la ultima vez que las estadisticas fueron actualizadas actualizando las estadisticas se consumen menos recursos y podria mejorar el performance, sin embargo si tu anticipas numeros cambios en los datos lo mejor seria apagar la actualizacion automatica de las estadisticas en ciertos indices.  Puedes usar el stored sp_autostats para desactivar la actualización automatica  como el siguiente ejemplo,

sp_autostats tabla, ‘OFF’,’nombre_indice’

y la forma de actualizar las estadisticas manualmente es la siguiente:

UPDATE STATISTICS tabla [nombre_indice]

 

Alfred_Magno

Espero les sirva

 

Saludos

Anuncios

Un comentario el “Indices SQL Server

Si te sirvio o te gusto el post, deja un comentario, o vota por el blog, esto nos ayuda a seguir creciendo, Gracias

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

A %d blogueros les gusta esto: