sql >> Databasteknik >  >> RDS >> Mysql

Minskar prestandan genom att introducera främmande nycklar till MySQL

Förutsatt:

  1. Du använder redan en lagringsmotor som stöder FK:er (t.ex. InnoDB)
  2. Du har redan index på kolumnerna som är involverade

Då skulle jag gissa att du får bättre prestanda genom att låta MySQL upprätthålla integritet. Att upprätthålla referensintegritet är trots allt något som databasmotorer är optimerade för att göra. Att skriva din egen kod för att hantera integritet i Ruby kommer att gå långsamt i jämförelse.

Om du behöver gå från MyISAM till InnoDB för att få FK-funktionaliteten måste du överväga avvägningarna i prestanda mellan de två motorerna.

Om du inte redan har index måste du bestämma om du vill ha dem. Generellt sett, om du läser mer än skriver, vill du ha (behöver till och med) indexen.

Att stapla en FK ovanpå saker som för närvarande är indexerade borde orsaka mindre prestandaträff än att implementera den typen av kontroller i din applikationskod.



  1. Stäng MySQL-anslutning (PHP)

  2. PDOException "kunde inte hitta drivrutinen" i php

  3. Hur kontrollerar jag om aktivera/inaktivera nycklar?

  4. MySQL INSERT INTO table VALUES.. vs INSERT INTO table SET