miércoles, 10 de junio de 2015

Indices SQL Server

Índices

Un índice es una estructura definida y asociada con una tabla o una vista, permitiendo localizar de forma rápida las filas de la tabla en base a su contenido en la columna indexada acelerando la recuperación de filas de la tabla o de la vista. Su funcionamiento es similar al de cualquier tipo de índice que conozcamos como el de un libro donde nos servirá como un marcador, sobre una determinada columna y la posición de la fila que contiene dicho valor dentro de la tabla.
Un índice ayuda al motor de base de datos en la ubicación de los registros. Sin índices, una consulta deberá buscar en cada uno de los registros de la tabla en orden hasta encontrar coincidencias.

Tipos de índices

Índice simple

Un índice simple se refiere a que está definido sobre una sola columna de la tabla

Índice compuesto

Un índice compuesto está formado por varias columnas de la misma tabla

Índice agrupado

El término índice agrupado no se debe confundir con índice compuesto, el significado es diferente.

Son índices que controlan el orden físico de las filas en la tabla, por lo cual solo puede existir un índice agrupado (CLUSTERED) para cada tabla.
Los índices agrupados ordenan y almacenan las filas de los datos de la tabla o vista de acuerdo con los valores de la clave del índice. Son columnas incluidas en la definición del índice. Si una tabla no tiene un índice clúster, sus filas de datos están almacenadas en una estructura sin ordenar denominada montón.

Índice no agrupado

Un índice no agrupado especifica la ordenación lógica de la tabla y tienen una estructura separada de las filas de datos. Se pueden crear hasta 250 índices no agrupados si no existe un índice agrupado en la tabla, si existe un índice agrupado solo se pueden crear 249.

El índice no agrupado crea un puntero o marcador que se denomina localizador de fila, si las páginas de datos están almacenadas en un montón el localizador de filas es un puntero hacia la fila. Si están en una tabla agrupada, el localizador de fila es la clave de índice agrupada.

Tanto los índices agrupados como los no agrupados pueden ser únicos. Esto significa que dos filas no pueden tener el mismo valor para la clave de índice. De lo contrario, el índice no es único y varias filas pueden compartir el mismo valor de clave.

El ejemplo más gráfico para estos 2 tipos de índices son los directorios telefónicos:

Agrupados = páginas blancas
No Agrupados = páginas amarillas

Las páginas blancas de la guía telefónica tienen un índice agrupado por Apellido(s) y Nombres, con lo cual puedo buscar de forma muy eficiente el número de teléfono de una persona si conozco sus apellidos y su nombre, una vez que lo encuentro obtendré su número de teléfono en forma inmediata pues el numero está al lado del nombre.


En el caso de las páginas amarillas la forma de buscar es un poco distinta, en este caso busco por la actividad económica (Un grupo muy general) y una vez allí busco las empresas allí almacenadas para identificar cual cumple mis requisitos de búsqueda guiándome por logos o tamaños más que por un nombre específico.

Fuentes: https://technet.microsoft.com/es-es/library/ms190457(v=sql.105).aspx

               https://tololochile.wordpress.com/2008/10/01/indices-en-sql-server-%E2%80%93-parte-1-%E2%80%93-introduccion/

1 comentario:

  1. Buenas noches

    Tengo una duda espero puedan ayudarme a disiparla.

    Solo los índices agrupados pueden ser considerados como columnas incluidas?

    Saludos

    ResponderEliminar