Kurze Antwort:
Indexe beschleunigen SELECT
's und verlangsamen INSERT
's.
Normalerweise ist es besser, Indizes zu haben, weil sie select
beschleunigen mehr als dass sie insert
verlangsamen .
Bei einem UPDATE
der Index kann die Dinge ganz nach oben beschleunigen wenn ein indiziertes Feld im WHERE
verwendet wird -Klausel und verlangsamen die Dinge, wenn Sie update
eines der indizierten Felder.
Woher wissen Sie, wann Sie einen Index verwenden sollten
Fügen Sie EXPLAIN
hinzu vor Ihrem SELECT
Anweisung.
So ähnlich:
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
Zeigt Ihnen, wie viel Arbeit MySQL für jedes der nicht indizierten Felder leisten muss.
Using Mit diesen Informationen können Sie entscheiden, ob es sich lohnt, Indizes hinzuzufügen oder nicht.
Explain kann Ihnen auch sagen, ob es besser ist, es zu löschen und zu indizieren
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
Wenn nur sehr wenige Zeilen ausgewählt sind oder MySQL sich zum Ignorieren entschieden hat den Index (das macht er von Zeit zu Zeit) dann können Sie den Index genauso gut löschen, weil es ist was Ihr insert
verlangsamt s, beschleunigt aber nicht Ihre select
's.
Andererseits könnte es auch sein, dass Ihre select-Anweisung nicht schlau genug ist.
(Entschuldigung für die Komplexität in der Antwort, ich habe versucht, es einfach zu halten, aber es ist mir nicht gelungen).
Link:
MySQL-Indizes - was sind sie? die Best Practices?