Risposta breve:
Gli indici accelerano SELECT
's e rallenta INSERT
'S.
Di solito è meglio avere gli indici, perché velocizzano la select
più di quanto non rallenti insert
.
Su un UPDATE
l'indice può accelerare le cose molto in alto se viene utilizzato un campo indicizzato in WHERE
clausola e rallenta le cose se update
uno dei campi indicizzati.
Come fai a sapere quando utilizzare un indice
Aggiungi EXPLAIN
davanti al tuo SELECT
dichiarazione.
In questo modo:
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
Ti mostrerà quanto lavoro dovrà fare MySQL su ciascuno dei campi non indicizzati.
Utilizzo quelle informazioni puoi decidere se vale la pena aggiungere indici o meno.
Explain può anche dirti se è meglio rilasciare e indicizzare
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
Se vengono selezionate pochissime righe o MySQL decide di ignorare l'indice (lo fa di tanto in tanto) allora potresti anche eliminare l'indice, perché è rallentando il tuo insert
s ma non velocizzando la tua select
's.
Poi di nuovo potrebbe anche essere che la tua affermazione select non sia abbastanza intelligente.
(scusate la complessità nella risposta, stavo cercando di mantenerla semplice, ma non ci sono riuscito).
Link:
Indici MySQL:cosa sono le migliori pratiche?