La regla básica es crear un índice sobre aquellas columnas que se vaya a usar con una cláusula WHERE, y no crearlos con aquellas columnas que vayan a ser objeto de un SELECT:
SELECT texto from tabla_libros WHERE autor = Muzztein
En este ejemplo, el atributo “autor” es un buen candidato a para ser elegido como índice; la de texto, no.
Otra regla básica es que son mejores candidatas a indexar aquellas columnas que presentan muchos valores distintos, mientras que no son buenas candidatas las que tienen muchos valores idénticos, como por ejemplo sexo (masculino y femenino) porque cada consulta implicará siempre recorrer prácticamente la mitad del índice.
Por otra parte, se debe tener en cuenta que los índices se actualizan cada vez que se modifica la columna o columnas utilizadas. Por ello, no es aconsejable usar como índices columnas en las que serán frecuentes operaciones de escritura (INSERT, UPDATE, DELETE).
Tampoco tendría sentido crear índices sobre columnas cuando cualquier select sobre ellos va a devolver una gran cantidad de resultados, por ejemplo una columna buleana que admita los valores S/N. Así como tampoco es necesario usar índices en tablas demasiado pequeñas, ya que en estos casos no hay ganancia de rapidez frente a una consulta normal. Finalmente, los índices ocupan espacio, a veces, incluso más que la tabla de datos.
... ahora. El hacer los indices en SQL 2000 es tan facil como ir a la base de datos en el enterprise manager, hacer click secundario sobre una tabla determinada/ todas las tareas / manejar INDICES. y ya!