sql >> Database >  >> RDS >> Mysql

Alternatief voor databaseontwerp met opgesomde kolommen, wat leidt tot slechte prestaties

In plaats van

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

gebruik

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

Als er geen andere tabellen verwijzen naar expressionId , verwijder die kolom en de index erop.

Waarom helpt dit? De gegevens worden geclusterd met de primaire sleutel; u zoekt gegevens op met geneId , wat het begin is van de PK; vandaar dat de gegevens efficiënter kunnen worden opgehaald, vooral als de tabel veel groter is dan innodb_buffer_pool_size (wat ongeveer 70% van het RAM-geheugen zou moeten zijn).



  1. MYSQL Selecteren uit tabellen op basis van meerdere rijen

  2. Is dit de beste manier om een ​​audit trail te creëren?

  3. Hoe wijzig ik de broncode van de MySQL Connector en installeer ik deze op mijn pc?

  4. Welke rijen worden geretourneerd bij gebruik van LIMIT met OFFSET in MySQL?