Aby naprawdę udzielić odpowiedzi, przydatne byłoby sprawdzenie, czy masz już istniejące indeksy, ale...
Wszystko to przy założeniu, że tabela „t” istnieje i musisz dodać indeks, a obecnie masz tylko jeden indeks w swoim kluczu podstawowym lub w ogóle nie ma indeksów.
Indeks pokrywający dla zapytania zapewni najlepszą wydajność dla Twoich potrzeb, ale w przypadku dowolnego indeksu poświęcisz pewną prędkość wstawiania. To, jak ważne jest to poświęcenie, zależy od profilu Twojej aplikacji. Jeśli czytasz głównie z tabeli, nie ma to większego znaczenia. Jeśli masz tylko kilka indeksów, nawet umiarkowane obciążenie zapisu nie będzie miało znaczenia. W grę może też wchodzić ograniczona ilość miejsca na Twoje stoły... Musisz dokonać ostatecznej oceny kompromisu i czy jest on zauważalny. Dobrą rzeczą jest to, że to dość stały hit. Zazwyczaj dodanie indeksu nie spowalnia wstawiania wykładniczo, tylko liniowo.
Niezależnie od tego, oto opcje najlepszej wybranej wydajności:
- Jeżeli kluczem podstawowym dla tabeli t jest c3, nie możesz zrobić nic lepszego w zapytaniu, aby przyspieszyć je za pomocą indeksu.
-
Zakładając, że kluczem głównym t jest c1:
ALTER TABLE t ADD INDEX covering_index (c3,c2);
-
Jeśli c1 nie jest twoim pk (i nie jest c2), użyj tego:
ALTER TABLE t ADD INDEX covering_index (c3,c2,c1);
-
Jeśli c2 jest twoim PK, użyj tego:
ALTER TABLE t ADD INDEX covering_index (c3,c1);
-
Jeśli problemem jest miejsce na dysku lub szybkość wstawiania, możesz wykonać indeks punktów. Poświęcisz trochę wydajności, ale jeśli wkładasz dużo, może to być właściwa opcja:
ALTER TABLE t ADD INDEX a_point_index (c3);