Zamiast
PRIMARY KEY (`expressionId`),
UNIQUE KEY `geneId` (`geneId`,`conditionId`),
użyj
PRIMARY KEY(`geneId`,`conditionId`),
INDEX (`expressionId`),
Jeśli żadne inne tabele nie odwołują się do expressionId
, pozbądź się tej kolumny i znajdującego się w niej indeksu.
Dlaczego to pomaga? Dane są zgrupowane z kluczem podstawowym; szukasz danych według geneId
, czyli początek PK; stąd dane mogą być pobierane wydajniej, zwłaszcza jeśli tabela jest dużo większa niż innodb_buffer_pool_size
(co powinno stanowić około 70% pamięci RAM).