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).