No estoy tan familiarizado con las bases de datos y ahora estoy tratando de entender el mecanismo de indexación.
Por lo que sé, en un RDBMS, la indexación en una columna agiliza la búsqueda por esa columna. Esto también es cierto para las tiendas triples, solo allí los índices suponen que buscará (por ejemplo) principalmente por el sujeto, luego por objeto, etc.
No estoy seguro acerca de RDBMS, pero en las tiendas triples puede definir más de un índice, permitiendo que la tienda elija el mejor índice para cada consulta (espero haberlo entendido bien). Naturalmente, aparece la siguiente pregunta:
¿Por qué no debería agregar todos los índices posibles a una tienda triple y, extendiéndome a un RDBMS, por qué no hacer índices en cada columna (suponiendo que no soy demasiado vago)?
Solo coloque índices cuando sea necesario. Como regla general, cuando estoy desarrollando un esquema de base de datos, cada tabla obtiene un índice agrupado de clave primaria PK para comenzar. Este será el identificador único para los datos en esa tabla. En puede estar en 1 columna o muchas.
Después de eso, generalmente solo agrego índices únicos no agrupados en la (s) columna (s) en las que deseo aplicar la unicidad.
Este es el esquema base. A medida que la aplicación se desarrolla y madura, agregamos índices según sea necesario en función de los problemas de rendimiento y la forma en que consultamos los datos.
Cada índice agregado aumenta el espacio utilizado, además de agregar mantenimiento adicional. Así que elige tus índices sabiamente.
fuente
La fortaleza de los índices es que son 1) una estructura de datos que se puede buscar rápidamente y 2) más compacta que las tablas reales, lo que permite que más del índice quepa en la memoria en lugar de ser paginado en el disco.
Si tiene un índice en cada columna, los índices ocuparán más espacio que la tabla que representan. Si la base de datos realmente utiliza todos los índices, requerirá más tiempo para intercambiarlos dentro y fuera de la memoria. Además, cada índice debe actualizarse de forma inerte, actualizar o eliminar.
Más allá de eso, los índices en una sola columna ni siquiera son lo mejor que puede hacer. La mayoría de las bases de datos de relaciones en realidad permiten un índice en varias columnas, y el orden de estas columnas es importante. Por ejemplo, si quiero buscar en una base de datos a todas las personas que asistieron a Duke de las clases entre 1980 y 1984, entonces lo que quiero es un índice en (School, ClassYear). La consulta no podría usar un índice con las mismas columnas, pero se invirtió.
Entonces, para crear todos los índices posibles, ¡hay al menos n! formas de organizar columnas en un índice. Con solo 5 columnas, hay 120 índices posibles.
Dado que hay tantos índices posibles, realmente tiene que determinar qué índices son útiles para su aplicación y crear solo esos.
fuente
Crear un índice para cada columna de una tabla suele ser una pérdida de espacio y, como han mencionado otros, puede ralentizar las operaciones de inserción / actualización. Se utiliza un índice para acelerar las consultas. Solo recomendaría agregar un índice a una columna si observa un bajo rendimiento al consultar valores en esa columna.
Algunas bases de datos pueden requerir un índice para la clave principal de una tabla, por lo que es posible que no pueda elegir esa. Además, si tiene columnas de texto muy grandes, existen tecnologías específicas que están diseñadas para la búsqueda de texto completo y el índice, pero no siempre son los mismos tipos de índice que usaría para una columna numérica pequeña.
fuente