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?