Indices, caracteristicas



Como vimos en el anterior post, un índice es en comportamiento idéntico a un índice de un libro y nos sirve para poder realizar una busque más rápido y vimos los dos tipos de índices más comunes en SQL Server, ahora veremos a un nivel más técnico que es un índice.

Un índice busca por medio de columnas (una o más) y términos conocidos, esto lo hace por medio de hashing sobre un árbol binario de búsqueda. Para comprender esto de mejor manera tenemos que entender la manera en que se organiza la información.
  • Heap: Tablas sin orden alguno, son tablas que no tienen un índice de ningún tipo y tienen todos los datos de las columnas (el heap es la tabla)
  • Clustered Index: Las tablas tienen un orden natural, ordenadas por medio de un árbol binario, la información normalmente está llena al 100% (esto se conoce como el fill factor) en las hojas del árbol se encuentra contenida la información.
  • No-Clustered Index: Estos son copias de una o más columnas con un orden distinto al definido en el clustered, también son árboles binarios pero en sus hojas se encuentra contenida una referencia a la información, lo cual los hace un poco más lentos que un índice clustered.

En SQL Server 2012 además tenemos a los "No Clustered columnstore" y  los "Clustered columnstore"  en 2014 ambos son optimizados para inteligencia de negocios.

Cuando accedamos a la información esta puede ser acezada por medio de:
  • Scan: Cuando no conoce lo que buscamos tiene que recorrer todas las tuplas (renglones) en búsqueda de la información, esta es la forma más lenta y con mayor costo.
  • Seek: El index seek como dice el nombre busca por valores específicos dentro de las llaves, estos solo pueden ser realizados en estructuras como los arboles binarios, lo cual los limita a solamente los índices, algo importante es que siempre se basa en los valores a la izquierda, por ejemplo si tenemos un índice compuesto como "nombre, apellido paterno, apellido materno" el índice puede hacer búsquedas sobre "nombre", "nombre y apellido paterno", "nombre, apellido materno" más no sobre búsquedas como "apellido paterno" o "apellido materno".

Glosario:

Cluster <> Grupo
Heap <> Pila
Fill factor <> Factor de llenado
Scan <> Explorar
Seek <> Buscar

Más información:

Comentarios

Entradas más populares de este blog

Mover indices no clustered a un nuevo filegroup