it-swarm.com.de

Warum unterstützt die MySAM-Engine von MySQL keine Fremdschlüssel?

Ich schreibe eine Web-App für mein Studium, die Volltextsuche und Fremdschlüssel beinhaltet.

Ich habe irgendwo gelesen, MyISAM-Engine eignet sich für die Volltextsuche und InnoDB für Fremdschlüssel.

Welchen Motor sollte ich in dieser Situation verwenden, um die beste Leistung zu erzielen?

  • Warum unterstützt MyISAM keine Fremdschlüsselbeziehung, aber InnoDB?
  • Warum unterstützt MyISAM die Volltextsuche, InnoDB jedoch nicht?
32
Firefox101
  1. Sagen Sie mir bitte, welche Engine muss ich in dieser Situation verwenden, um die Leistung zu verbessern?

    Die Leistung jeder Storage Engine hängt von den von Ihnen ausgeführten Abfragen ab. Beachten Sie jedoch, dass verschiedene Tabellen in derselben Datenbank unterschiedliche Speicher-Engines verwenden können.

  2. Warum unterstützt die MyISAM-Engine keine Fremdschlüsselbeziehung und InnoDB dies?

    Wie unter Fremdschlüsseldifferenzen dokumentiert:

    Zu einem späteren Zeitpunkt werden Fremdschlüsseleinschränkungen auch für MyISAM-Tabellen implementiert.

    Daher wurden Fremdschlüsseleinschränkungen in MyISAM einfach noch nicht implementiert.

EDIT: Wenn dieser Kommentar aus den Dokumenten entfernt wird, scheint die Implementierung von Fremdschlüsseleinschränkungen in der MyISAM-Engine nicht mehr geplant zu sein.

  1. Warum unterstützt die MyISAM-Engine die Volltextsuche und InnoDB nicht?

    Wie unter Was ist neu in MySQL 5.6 dokumentiert.} _:

    Sie können FULLTEXT-Indizes für InnoDB-Tabellen erstellen und diese mit der Syntax MATCH() ... AGAINST abfragen.

    Daher wurde ab MySQL 5.6 die Volltextsuche in InnoDB implementiert.

41
eggyal

Ich erinnere mich an die Zeiten, als mysql nur myisam hatte und innodedb in der Entwicklung war. MyIsam hat keine Fremdschlüssel, weil es ein altes System ist, das keine Beziehungen in der Datenbank unterstützt. Es werden niemals Fremdschlüssel verwendet! Um es zu benutzen, hast du innodb. Wenn Sie nicht alles benötigen, z. B. Beziehungen in der Datenbank, verwenden Sie MyISAM, um eine bessere Leistung zu erzielen.

0
rafal