Isso depende do que você quer dizer com 'bom' e 'ruim'. Basicamente, você precisa perceber que cada índice adicionado aumentará o desempenho em qualquer pesquisa por essa coluna (então, adicionar um índice à coluna 'sobrenome' de uma tabela de pessoas aumentará o desempenho em consultas que têm "onde sobrenome =" nelas), mas diminuir o desempenho de gravação em toda a tabela.
A razão para isso é que quando você adiciona ou atualiza uma linha, ela deve adicionar ou atualizar a própria tabela e cada índice do qual essa linha é membro. Portanto, se você tiver cinco índices em uma tabela, cada adição deve gravar em seis lugares - cinco índices e a tabela - e uma atualização pode tocar até seis lugares no pior caso.
A criação de índice é um ato de equilíbrio entre a velocidade de consulta e a velocidade de gravação. Em alguns casos, como um datamart que é carregado com dados apenas uma vez por semana em um trabalho noturno, mas consultado milhares de vezes diariamente, faz muito sentido sobrecarregar com índices e acelerar as consultas o máximo possível. No caso de sistemas de processamento de transações online, no entanto, você deseja tentar encontrar um equilíbrio entre eles.
Então, resumindo, adicione índices a colunas que são muito usadas em consultas selecionadas, mas tente evitar adicionar muitos e, assim, adicione primeiro as colunas mais usadas.
Depois disso, é uma questão de testes de carga para ver como o desempenho reage sob condições de produção e muitos ajustes para encontrar um equilíbrio aceitável.