una tipos tabla nonclustered manejo index ejemplos create consultar clustered sql indexing

tipos - ¿Qué es un índice en SQL?



manejo de indices en sql (11)

¿Qué es un índice en SQL? ¿Puedes explicar o hacer referencia para entender claramente?

¿Dónde debo usar un índice?


Bueno, en general el índice es un B-tree . Hay dos tipos de índices: agrupados y no agrupados.

El índice agrupado crea un orden físico de filas (puede ser solo una y, en la mayoría de los casos, también es una clave principal; si crea una clave principal en la tabla, también creará un índice agrupado en esta tabla).

El índice no agrupado también es un árbol binario pero no crea un orden físico de filas. Por lo tanto, los nodos de hoja del índice no agrupado contienen PK (si existe) o índice de fila.

Los índices se utilizan para aumentar la velocidad de búsqueda. Porque la complejidad es de O (log N). Índices es un tema muy grande e interesante. Puedo decir que crear índices en grandes bases de datos a veces es una especie de arte.


INDEX es una técnica de optimización del rendimiento que acelera el proceso de recuperación de datos. Es una estructura de datos persistente que se asocia con una Tabla (o Vista) para aumentar el rendimiento durante la recuperación de los datos de esa tabla (o Vista).

La búsqueda basada en índices se aplica más particularmente cuando sus consultas incluyen el filtro DONDE. De lo contrario, es decir, una consulta sin el filtro WHERE selecciona datos y procesos completos. La búsqueda de una tabla completa sin ÍNDICE se llama Table-scan.

Encontrará la información exacta de los índices de SQL de forma clara y confiable: siga estos enlaces:

  1. Para una comprensión más acertada: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Overview-and-Optimizations.html
  2. Para una mejor comprensión de la implementación: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Creation-Deletetion-Optimizations.html

Primero debemos entender cómo se ejecuta la consulta normal (sin indexación). Básicamente recorre cada fila una por una y cuando encuentra los datos, regresa. Consulte la siguiente imagen. (Esta imagen ha sido tomada de este video .)

Entonces, supongamos que la consulta es encontrar 50, tendrá que leer 49 registros como una búsqueda lineal.

Consulte la siguiente imagen. (Esta imagen ha sido tomada de este video )

Cuando aplicamos la indexación, la consulta descubrirá rápidamente los datos sin leer cada uno de ellos simplemente eliminando la mitad de los datos en cada recorrido como una búsqueda binaria. Los índices mysql se almacenan como árbol B donde todos los datos están en el nodo de hoja.


Se utiliza un índice para acelerar el rendimiento de las consultas. Para ello, reduce la cantidad de páginas de datos de la base de datos que deben visitarse o escanearse.

En SQL Server, un índice agrupado determina el orden físico de los datos en una tabla. Solo puede haber un índice agrupado por tabla (el índice agrupado ES la tabla). Todos los demás índices de una tabla se denominan no agrupados.


Se utiliza un índice para acelerar la búsqueda en la base de datos. MySQL tiene buena documentación sobre el tema (que también es relevante para otros servidores SQL): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Se puede usar un índice para encontrar eficientemente todas las filas que coincidan con alguna columna en su consulta y luego recorrer solo ese subconjunto de la tabla para encontrar coincidencias exactas. Si no tiene índices en ninguna columna de la cláusula WHERE , el servidor SQL debe recorrer toda la tabla y verificar cada fila para ver si coincide, lo que puede ser una operación lenta en tablas grandes.

El índice también puede ser un índice UNIQUE , lo que significa que no puede tener valores duplicados en esa columna, o una PRIMARY KEY que, en algunos motores de almacenamiento, define dónde se almacena el valor en el archivo de la base de datos.

En MySQL puede usar EXPLAIN delante de su declaración SELECT para ver si su consulta utilizará algún índice. Este es un buen comienzo para solucionar problemas de rendimiento. Lea más aquí: http://dev.mysql.com/doc/refman/5.0/en/explain.html


Si está utilizando SQL Server, uno de los mejores recursos son sus propios libros en línea que vienen con la instalación. Es el primer lugar al que me referiría para CUALQUIER tema relacionado con SQL Server.

Si es práctico "¿cómo debo hacer esto?" tipo de preguntas, entonces sería un mejor lugar para preguntar.

Además, no he vuelto por un tiempo, pero sqlservercentral.com solía ser uno de los mejores sitios relacionados con SQL Server.


Un índice agrupado es como el contenido de una guía telefónica. Puede abrir el libro en ''Hilditch, David'' y encontrar toda la información de todos los ''Hilditch'' uno al lado del otro. Aquí las claves para el índice agrupado son (apellido, primer nombre).

Esto hace que los índices agrupados sean excelentes para recuperar gran cantidad de datos basados ​​en consultas basadas en rango, ya que todos los datos se encuentran uno al lado del otro.

Dado que el índice agrupado está realmente relacionado con la forma en que se almacenan los datos, solo hay uno de ellos por tabla (aunque puede hacer trampa para simular múltiples índices agrupados).

Un índice no agrupado es diferente en que puede tener muchos de ellos y luego apuntan a los datos en el índice agrupado. Podría tener, por ejemplo, un índice no agrupado en la parte posterior de una guía telefónica que está tecleado en (ciudad, dirección)

Imagínese si tuviera que buscar en la guía telefónica a todas las personas que viven en ''Londres''; con solo el índice agrupado, tendría que buscar en cada elemento de la guía telefónica desde que está activada la clave del índice agrupado (apellido, primer nombre) y, como resultado, las personas que viven en Londres están dispersas al azar en todo el índice.

Si tiene un índice no agrupado en (ciudad), estas consultas se pueden realizar mucho más rápidamente.

¡Espero que ayude!


Un índice se utiliza por varias razones diferentes. La razón principal es acelerar la consulta para que pueda obtener filas u ordenar filas más rápido. Otra razón es definir una clave primaria o un índice único que garantice que ninguna otra columna tenga los mismos valores.


Una muy buena analogía es pensar en un índice de base de datos como un índice en un libro. Si tiene un libro sobre países y está buscando India, entonces ¿por qué hojear todo el libro, que es el equivalente a un escaneo de tabla completa en terminología de base de datos, cuando puede ir al índice al final de la página? libro, que le dirá las páginas exactas donde puede encontrar información sobre la India. Del mismo modo, como un índice de libro contiene un número de página, un índice de base de datos contiene un puntero a la fila que contiene el valor que está buscando en su SQL.

Más aquí


INDEXES - para encontrar datos fácilmente

UNIQUE INDEX - no se permiten valores duplicados

Sintaxis para INDEX

CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);

Sintaxis para UNIQUE INDEX

CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);


Los índices tienen que ver con encontrar datos rápidamente . Los índices en una base de datos son análogos a los índices que usted encuentra en un libro. Si un libro tiene un índice, y le pido que busque un capítulo en ese libro, puede encontrarlo rápidamente con la ayuda del índice. Por otro lado, si el libro no tiene un índice, tendrá que pasar más tiempo buscando el capítulo, mirando cada página desde el principio hasta el final del libro. De manera similar, los índices en una base de datos pueden ayudar a las consultas a encontrar datos rápidamente. Si eres nuevo en los índices, los siguientes videos pueden ser muy útiles. De hecho, he aprendido mucho de ellos.

Conceptos básicos del índice
Índices agrupados y no agrupados
Índices únicos y no únicos
Ventajas y desventajas de los índices.