Esto depende de lo que entiendas por 'bueno' y 'malo'. Básicamente, debe darse cuenta de que cada índice que agregue aumentará el rendimiento en cualquier búsqueda por esa columna (por lo que agregar un índice a la columna 'apellido' de una tabla de personas aumentará el rendimiento en las consultas que tienen "donde apellido =" en ellas) pero disminuir el rendimiento de escritura en toda la tabla.
La razón de esto es que cuando agrega o actualiza una fila, debe agregar o actualizar tanto la tabla como cada índice del que es miembro esa fila. Entonces, si tiene cinco índices en una tabla, cada adición debe escribirse en seis lugares (cinco índices y la tabla) y una actualización puede tocar hasta seis lugares en el peor de los casos.
La creación de índices es un acto de equilibrio entre la velocidad de consulta y la velocidad de escritura. En algunos casos, como un datamart que solo se carga con datos una vez a la semana en un trabajo nocturno pero consulta miles de veces al día, tiene mucho sentido sobrecargar con índices y acelerar las consultas tanto como sea posible. Sin embargo, en el caso de los sistemas de procesamiento de transacciones en línea, desea intentar encontrar un equilibrio entre ellos.
En resumen, agregue índices a las columnas que se usan mucho en las consultas seleccionadas, pero intente evitar agregar demasiados y, por lo tanto, agregue primero las columnas más utilizadas.
Después de eso, es una cuestión de pruebas de carga para ver cómo reacciona el rendimiento en condiciones de producción y muchos ajustes para encontrar un equilibrio aceptable.