sql >> Database >  >> RDS >> Mysql

Vermindert het introduceren van externe sleutels in MySQL de prestaties?

Ervan uitgaande:

  1. U gebruikt al een opslagengine die FK's ondersteunt (dwz:InnoDB)
  2. Je hebt al indexen voor de betreffende kolommen

Dan denk ik dat je betere prestaties krijgt door MySQL integriteit te laten afdwingen. Het afdwingen van referentiële integriteit is tenslotte iets waarvoor database-engines zijn geoptimaliseerd. Het schrijven van uw eigen code om de integriteit in Ruby te beheren, zal in vergelijking traag zijn.

Als u van MyISAM naar InnoDB moet gaan om de FK-functionaliteit te krijgen, moet u rekening houden met de compromissen in prestaties tussen de twee engines.

Als u nog geen indices heeft, moet u beslissen of u ze wilt. Over het algemeen, als je meer leest dan schrijft, wil je (zelfs) de indices.

Het stapelen van een FK bovenop dingen die momenteel zijn geïndexeerd, zou minder algemene prestatiehits moeten opleveren dan het implementeren van dat soort controles in uw applicatiecode.



  1. MySQL Bulk invoegen via PHP

  2. Geautomatiseerd testen van het upgradeproces voor PXC/MariaDB Galera Cluster

  3. Is er een FIND_IN_SET op index in MySQL?

  4. Hoe een bepaald aantal tekens links of rechts van een tekenreeks in SQL Server te selecteren?