Może to być czas na partycjonowanie poziome i przeniesienie pola blob do osobnej tabeli. W tym artykule w „Szybkiej uwadze bocznej na temat partycjonowania pionowego” autor usuwa większe pole varchar z tabeli i zwiększa prędkość zapytania o rząd wielkości.
Powodem jest to, że fizyczne przechodzenie danych na dysku staje się znacznie szybsze, jeśli jest mniej miejsca do pokrycia, więc przeniesienie większych pól w inne miejsce zwiększa wydajność.
Również (i prawdopodobnie już to robisz) korzystne jest zmniejszenie rozmiaru kolumny indeksu do absolutnego minimum (char(32) w kodowaniu ascii dla md5), ponieważ rozmiar klucza jest wprost proporcjonalny do szybkości jego użycia .
Jeśli wykonujesz wiele operacji wstawiania na raz z tabelami InnoDB, możesz znacznie zwiększyć szybkość wstawiania, umieszczając je w transakcji i wykonując wiele wstawień w jednym zapytaniu:
START TRANSACTION
INSERT INTO x (id, md5, field1, field2) values (1, '123dab...', 'data1','data2'),(2,'ab2...','data3','data4'),.....;
COMMIT