Indexieren Sie, was am logischsten erscheint (das sollte hoffentlich offensichtlich sein, zum Beispiel eine Kunden-ID-Spalte in der CUSTOMERS-Tabelle).
Führen Sie dann Ihre Anwendung aus und sammeln Sie regelmäßig Statistiken, um zu sehen, wie die Datenbank arbeitet. RUNSTATS auf DB2 ist ein Beispiel, ich würde hoffen, dass MySQL ein ähnliches Tool hat.
Wenn Sie feststellen, dass einige häufig ausgeführte Abfragen vollständige Tabellenscans durchführen (oder aus anderen Gründen zu lange dauern), dann und nur dann , sollten Sie weitere Indizes hinzufügen. Es nützt wenig, eine Abfrage, die einmal im Monat um Mitternacht ausgeführt wird, so zu optimieren, dass sie um 12:05 statt um 12:07 beendet werden kann. Es ist jedoch eine enorme Verbesserung, eine kundenorientierte Anfrage von 5 Sekunden auf 2 Sekunden zu verkürzen (das ist immer noch zu langsam, kundenorientierte Anfragen sollten nach Möglichkeit weniger als eine Sekunde dauern).
Mehr Indizes neigen dazu, Einfügungen zu verlangsamen und Abfragen zu beschleunigen. Es ist also immer ein Balanceakt. Aus diesem Grund fügen Sie Indizes nur als spezifische Reaktion auf ein Problem hinzu. Alles andere ist vorzeitige Optimierung und sollte vermieden werden.
Überprüfen Sie außerdem regelmäßig die Indizes, die Sie bereits haben, um zu sehen, ob sie noch benötigt werden. Es kann sein, dass die Abfragen, die Sie veranlasst haben, diese Indizes hinzuzufügen, nicht mehr oft genug ausgeführt werden, um dies zu rechtfertigen.
Um ehrlich zu sein, glaube ich nicht, dass die Indizierung von drei Spalten in einer Tabelle Sie in Mitleidenschaft ziehen wird, es sei denn, Sie planen, eine wirklich große Anzahl von Zeilen zu speichern :-) - die Indizierung ist ziemlich effizient.
Nach Ihrer Bearbeitung, die besagt:
Meine Antwort ist, dass 200 Datensätze pro Tag ein extrem kleiner Wert für eine Datenbank sind, mit diesen drei Indizes müssen Sie sich definitiv keine Sorgen machen.
Erst diese Woche habe ich bei der Arbeit Transaktionen im Wert von einem Tag in eine unserer Datenbanktabellen importiert, die 2,1 Millionen Datensätze enthielt (wir erhalten mindestens eine Transaktion pro Sekunde über den ganzen Tag von 25 separaten Computern). Und es hat vier separate zusammengesetzte Tasten, was etwas intensiver ist als Ihre drei einzelnen Tasten.
Nun zugegeben, das ist auf einer DB2-Datenbank, aber ich kann mir nicht vorstellen, dass IBM so ist viel besser als die MySQL-Leute, dass MySQL nur weniger als 0,01 % der DB2-Last bewältigen kann.