Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Alternativa ao design de banco de dados com colunas enumeradas, levando a desempenhos insatisfatórios


Ao invés de
PRIMARY KEY (`expressionId`),
UNIQUE KEY `geneId` (`geneId`,`conditionId`),

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

Se nenhuma outra tabela estiver referenciando expressionId , livre-se dessa coluna e do índice nela.

Por que isso ajuda? Os dados são agrupados com a chave primária; você está procurando dados por geneId , que é o início do PK; portanto, os dados podem ser buscados com mais eficiência, especialmente se a tabela for muito maior que innodb_buffer_pool_size (que deve ser cerca de 70% da RAM).