Indeksuj to, co wydaje się najbardziej logiczne (co powinno być oczywiste, na przykład kolumna ID klienta w tabeli KLIENCI).
Następnie uruchom aplikację i okresowo zbieraj statystyki, aby zobaczyć, jak działa baza danych. RUNSTATS na DB2 jest jednym z przykładów. Mam nadzieję, że MySQL ma podobne narzędzie.
Gdy zauważysz, że niektóre często wykonywane zapytania wykonują pełne skanowanie tabel (lub trwają zbyt długo z innych powodów), i tylko wtedy , jeśli dodasz więcej indeksów. Optymalizacja zapytania uruchamianego raz w miesiącu o północy na niewiele się zda, aby mogło zakończyć się o godzinie 12:05 zamiast o 12:07. Jednak ogromnym ulepszeniem jest skrócenie zapytania skierowanego do klienta z 5 sekund do 2 sekund (to wciąż zbyt wolne, zapytania skierowane do klienta powinny być poniżej sekundy, jeśli to możliwe).
Więcej indeksów ma tendencję do spowalniania wstawiania i przyspieszania zapytań. Więc zawsze jest to balansowanie. Dlatego dodajesz indeksy tylko w określonej odpowiedzi na problem. Wszystko inne jest przedwczesną optymalizacją i należy tego unikać.
Ponadto od czasu do czasu przeglądaj indeksy, które już posiadasz, aby sprawdzić, czy nadal są potrzebne. Może się zdarzyć, że zapytania, które spowodowały dodanie tych indeksów, nie są już uruchamiane wystarczająco często, aby to uzasadnić.
Szczerze mówiąc, nie wierzę, że indeksowanie trzech kolumn w tabeli spowoduje cierpienie, chyba że planujesz przechowywać naprawdę dużą liczbę wierszy :-) - indeksowanie jest dość wydajne.
Po edycji, która stwierdza:
Moja odpowiedź jest taka, że 200 rekordów dziennie to wyjątkowo mała wartość dla bazy danych, na pewno nie będziesz się o nic martwić przy tych trzech indeksach.
Tylko w tym tygodniu zaimportowałem transakcje z dni roboczych do jednej z naszych tabel bazy danych w pracy i zawierała ona 2,1 miliona rekordów (otrzymujemy co najmniej jedną transakcję na sekundę w ciągu całego dnia z 25 oddzielnych komputerów). Ma cztery oddzielne klawisze kompozytowe, które są nieco bardziej intensywne niż trzy indywidualne klawisze.
Teraz przyznane, to jest w bazie danych DB2, ale nie wyobrażam sobie, aby IBM był tak znacznie lepiej niż ludzie MySQL, że MySQL może obsłużyć tylko mniej niż 0,01% obciążenia DB2.