sql >> Database teknologi >  >> RDS >> Mysql

Reducerer introduktion af fremmede nøgler til MySQL ydeevnen

Forudsat:

  1. Du bruger allerede en lagermaskine, der understøtter FK'er (f.eks. InnoDB)
  2. Du har allerede indekser på de involverede kolonner

Så vil jeg gætte på, at du får bedre ydeevne ved at lade MySQL håndhæve integritet. At håndhæve referentiel integritet er trods alt noget, som databasemotorer er optimeret til at gøre. At skrive din egen kode til at administrere integritet i Ruby vil være langsom i sammenligning.

Hvis du skal flytte fra MyISAM til InnoDB for at få FK-funktionaliteten, skal du overveje afvejningen i ydeevnen mellem de to motorer.

Hvis du ikke allerede har indekser, skal du beslutte, om du vil have dem. Generelt set, hvis du læser mere end skriver, vil du have (har endda brug for) indekserne.

At stable en FK oven på ting, der i øjeblikket er indekseret, burde forårsage et mindre overordnet præstationshit end at implementere den slags kontroller i din applikationskode.



  1. Søger du efter tilgængelighed med MySQL (og PHP)?

  2. Sådan læser og analyserer du SQL Server-udførelsesplaner

  3. Handling ikke tilladt efter ResultSet lukket (mysql, java)

  4. CodeIgniter:Sådan bruges WHERE-klausulen og OR-klausulen