Mysql
 sql >> Base de données >  >> RDS >> Mysql

Alternative à la conception de base de données avec des colonnes énumérées, entraînant de mauvaises performances

Au lieu de

PRIMARY KEY (`expressionId`),
UNIQUE KEY `geneId` (`geneId`,`conditionId`),

utiliser

PRIMARY KEY(`geneId`,`conditionId`),
INDEX (`expressionId`),

Si aucune autre table ne référence expressionId , supprimez cette colonne et son index.

Pourquoi cela aide-t-il ? Les données sont regroupées avec la clé primaire ; vous recherchez des données par geneId , qui est le début du PK ; par conséquent, les données peuvent être récupérées plus efficacement, surtout si la table est beaucoup plus grande que innodb_buffer_pool_size (ce qui devrait représenter environ 70 % de la RAM).