sql >> Databasteknik >  >> RDS >> Mysql

Alternativ till databasdesign med uppräknade kolumner, vilket leder till dåliga prestanda

Istället för

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

använd

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

Om inga andra tabeller refererar till expressionId , bli av med den kolumnen och indexet på den.

Varför hjälper detta? Data är klustrade med den primära nyckeln; du letar upp data med geneId , vilket är början på PK; därför kan data hämtas mer effektivt, speciellt om tabellen är mycket större än innodb_buffer_pool_size (vilket bör vara cirka 70 % av RAM-minnet).



  1. Söker efter de 5 platserna som ligger närmast ett postnummer – vilken väg ska jag gå?

  2. Alternativt utdataformat för psql

  3. Anslut tabell till en kapslad array [PHP/MYSQL]

  4. Hur man lagrar AES-krypterad information i MySQL-databas