Resposta curta:
Os índices aceleram
SELECT 's e reduza a velocidade de INSERT 's. Normalmente é melhor ter índices, porque eles aceleram
select mais do que desaceleram insert . Em um
UPDATE o índice pode acelerar as coisas para cima se um campo indexado for usado no WHERE cláusula e desacelerar as coisas se você update um dos campos indexados. Como você sabe quando usar um índice
Adicionar
EXPLAIN na frente de seu SELECT declaração.Assim:
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
Mostrará quanto trabalho o MySQL terá que fazer em cada um dos campos não indexados.
Usando essa informação você pode decidir se vale a pena adicionar índices ou não.
Explique também pode dizer se é melhor descartar e indexar
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
Se poucas linhas forem selecionadas, ou o MySQL decidiu ignorar o índice (faz isso de tempos em tempos) então você também pode descartar o índice, porque é desacelerando seu
insert s, mas não acelerando seu select 's. Então, novamente, também pode ser que sua instrução select não seja inteligente o suficiente.
(Desculpe a complexidade na resposta, eu estava tentando mantê-la simples, mas falhei).
Link:
índices MySQL - o que são as melhores práticas?