Invece di
PRIMARY KEY (`expressionId`),
UNIQUE KEY `geneId` (`geneId`,`conditionId`),
usa
PRIMARY KEY(`geneId`,`conditionId`),
INDEX (`expressionId`),
Se nessun'altra tabella fa riferimento a expressionId
, elimina quella colonna e l'indice su di essa.
Perché questo aiuta? I dati sono raggruppati con la chiave primaria; stai cercando i dati tramite geneId
, che è l'inizio della PK; quindi i dati possono essere recuperati in modo più efficiente, specialmente se la tabella è molto più grande di innodb_buffer_pool_size
(che dovrebbe essere circa il 70% della RAM).