Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verringert die Einführung von Fremdschlüsseln in MySQL die Leistung?

Angenommen:

  1. Sie verwenden bereits eine Speicher-Engine, die FKs unterstützt (z. B. InnoDB)
  2. Sie haben bereits Indizes für die betroffenen Spalten

Dann würde ich vermuten, dass Sie eine bessere Leistung erzielen, wenn MySQL die Integrität erzwingt. Das Erzwingen der referenziellen Integrität ist schließlich etwas, für das Datenbank-Engines optimiert sind. Das Schreiben Ihres eigenen Codes zum Verwalten der Integrität in Ruby wird im Vergleich langsam sein.

Wenn Sie von MyISAM zu InnoDB wechseln müssen, um die FK-Funktionalität zu erhalten, müssen Sie die Kompromisse bei der Leistung zwischen den beiden Engines berücksichtigen.

Wenn Sie noch keine Indizes haben, müssen Sie entscheiden, ob Sie sie möchten. Wenn Sie mehr Lesevorgänge als Schreibvorgänge ausführen, möchten (brauchen) Sie im Allgemeinen die Indizes.

Das Stapeln eines FK auf Daten, die derzeit indiziert sind, sollte die Gesamtleistung weniger beeinträchtigen als das Implementieren dieser Art von Überprüfungen in Ihrem Anwendungscode.