Re: ¿ Qué Son Los Indices ?
La pregunta es ambigua. ¿Qué son o para qué sirven?
Ser lo que se dice ser hasta donde yo recuerdo (y hablo de memoria) son una suerte de estructura en forma de arbol, que puede ser de uno o varios inodos, en los que las palabras claves se organizan. Es posible así encontrar los registros en sólo dos o tres "saltos".
¿Para qué sirven? Tienen dos o tres usos destacados:
-Para relacionar tablas. Que es la esencia de las bases de datos relacionales. El índice es el "atajo" que el motor de la base de datos usa para eso.
-Para identificar unívocamente una fila. Que es el paso paso previo a la relación (no puedes relacionar cosas ambiguas) y, por ende, para acceder rápidamente a ese identificador.
-Por último con los índices "Full-text" (no todas las bases de datos lo tienen) puedes realizar búsquedas "aproximadas" tipo google en campos de texto grandes. MySQL lo incorporó no hace demasiado tiempo y, en según qué escenarios, es algo genial.
-No olvidemos su función primordial: para encontrar más rápido registros por campos de búsqueda frecuente. Así, no es raro que tengas, por ejemplo, una tabla con un identificador único (el dni, por ejemplo) y un campo, el nombre, sobre el que creas un índice no-único por ser el campo con el que más frecuentemente se va a buscar.
Una buena planificación de índices puede acelerar un montón el manejo de la base de datos. Una mala planificación puede enredar las cosas. Por ejemplo el abuso de campos indexados hace mucho más pesado el trabajo del motor de la base de datos. No hay que indexar campos no habituales de búsqueda y que no sean claves foráneas para otras tablas, etc.
Por último sólo vale la pena indexar campos para búsquedas rápidas cuando la tabla tenga un tamaño respetable. Fuera de eso el índice más que ayudar, estorba.
Como siempre, no sé si sólo digo obviedades o ayudo en algo...
Saludos