¿Cómo trabajar con índices sql

La especificación SQL no aborda el tema de los índices, pero esa omisión no significa que los índices son piezas raras o incluso opcionales de un sistema de base de datos. Cada aplicación SQL soporta índices, pero usted encontrará hay un acuerdo universal sobre cómo apoyarlos.

¿Qué es un índice?

Los datos aparecen en una tabla en el orden en el que ha introducido la información en SQL. Ese orden puede no tener nada que ver con el orden en que más adelante desea procesar los datos. Digamos que usted desea procesar su mesa CLIENTE Nombre de Cliente orden. El equipo debe primero ordenar la tabla en Nombre de Cliente orden. Clasificación de los datos de esta manera toma tiempo. Mesas más grandes tardan más en ordenar.

¿Qué pasa si usted tiene una mesa con 100.000 filas? O una mesa con un millón de filas? En algunas aplicaciones, tales tamaños de mesa no son raros. Los mejores algoritmos de ordenación tendrían que hacer unos 20 millones de comparaciones y millones de swaps de poner la mesa en el orden deseado. Incluso si usted está usando un ordenador muy rápido, puede que no quiera esperar tanto tiempo.

Los índices pueden ser un gran ahorro de tiempo. Un índice es una filial o mesa de soporte que va junto con una tabla de datos. Para cada fila de la tabla de datos, usted tiene una fila correspondiente en la tabla de índice. El orden de las filas en la tabla de índice es diferente.

Nombre de ClienteDirección 1Dirección 2CiudadEstado
Animal Clinic Butternut5 Butternut CarrilHudsonNH
Ámbar Veterinaria, Inc.470 Kolvir CírculoÁmbarMichigan
Los veterinarios R Us2300 Geoffrey carreteraSuite de 230AnaheimCalifornia
Perrito Médico32 Terry TerrazaNutleyNueva Jersey
El Centro EcuestreVeterinaria7890 Paddock ParkwayGallupNM
Dolphin Instituto1002 Marine DriveKey WestFlorida
J. C. Campbell, Veterinario de crédito2500 Main Streetlos AngelesCalifornia
Gusano Granja de Wenger15 Bait bulevarSedonaArizona

Aquí las filas no están en orden alfabético por Nombre de Cliente. De hecho, ellos no están en ningún orden útil a todos. Las filas son simplemente en el orden en el que alguien haya introducido los datos.

Nombre de ClientePuntero a la tabla de datos
Ámbar Veterinaria, Inc.2
Animal Clinic Butternut1
Perrito Médico4
Dolphin Instituto6
J. C. Campbell, Veterinario de crédito7
El Centro Ecuestre5
Los veterinarios R Us3
Gusano Granja de Wenger8

El índice contiene el campo que forma la base del índice (en este caso, Nombre de Cliente) Y un puntero en la tabla de datos. El puntero en cada fila de índice da el número de fila de la fila correspondiente en la tabla de datos.

¿Por qué usted debe desear un índice

Si desea procesar una mesa en Nombre de Cliente orden, y que haya un índice dispuestos en Nombre de Cliente orden, puede realizar su operación casi tan rápido como sea posible si la tabla de datos en sí ya eran Nombre de Cliente orden. Usted puede trabajar a través del índice, pasando inmediatamente al correspondiente registro de datos de cada fila de índice utilizando el puntero en el índice.

Si utiliza un índice, el tiempo de procesamiento de la tabla es proporcional a N, dónde N es el número de registros en la tabla. Sin un índice, el tiempo de procesamiento para la misma operación es proporcional a N lg N, dónde lg N es el logaritmo de N a la base 2. Para tablas grandes, la diferencia es grande. Algunas operaciones no son prácticos para llevar a cabo sin la ayuda de índices.

Suponga que tiene una tabla que contiene 1.000.000 registros (N = 1.000.000), y el procesamiento de cada registro tiene un milisegundo (una milésima de segundo). Si usted tiene un índice, el procesamiento de toda la tabla tiene sólo 1.000 segundos - menos de 17 minutos.

Sin un índice, es necesario pasar por la mesa de aproximadamente 1.000.000 x 20 veces para conseguir el mismo resultado. Este proceso tomaría 20.000 segundos - hora más de cinco y medio. La diferencia entre 17 minutos y cinco horas y media es sustancial.

¿Cómo mantener un índice

Después de crear un índice, debe mantenerla. Afortunadamente, su DBMS mantiene sus índices de forma automática, por ellos actualizando cada vez que actualice las tablas de datos correspondientes. Este proceso toma tiempo extra, pero vale la pena. Cuando se crea un índice y su DBMS mantiene, el índice está siempre disponible para acelerar su proceso de datos, no importa cuántas veces usted tiene que llamar en él.

El mejor momento para crear un índice es, al mismo tiempo se crea su tabla de datos correspondiente. Trate de anticipar todas las maneras que usted puede desear para acceder a sus datos, y luego crear un índice para cada posibilidad.

Algunos productos DBMS le dan la capacidad de apagar el mantenimiento de índices. Es posible que desee hacerlo en algunas aplicaciones en tiempo real donde actualizar índices toma una gran cantidad de tiempo y tiene muy poco que perder. Usted puede incluso elegir actualizar los índices como una operación separada durante las horas no pico. Como de costumbre, " hacer lo que funciona para usted " es la regla.

No caiga en la trampa de crear un índice para las órdenes de recuperación que es poco probable que utilice. Índice de mantenimiento es una operación adicional que el equipo debe realizar cada vez que se modifica el campo de índice o añade o elimina una fila de la tabla de datos - y esta operación afecta al rendimiento. Crear sólo aquellos índices que se espera utilizar teclas como de recuperación - y sólo para las tablas que contienen un gran número de filas.

Puede que tenga que compilar algo como un informe mensual o trimestral que requiere los datos en un orden extraño que usted no necesita normalmente. Crear un índice justo antes de ejecutar que informe periódico, ejecutar el informe, y luego dejar caer el índice para el DBMS no está gravada con el mantenimiento del índice durante el largo período entre los informes.




» » » » ¿Cómo trabajar con índices sql