Während der Suche durch SO habe ich zwei widersprüchliche Antworten gefunden (und sogar einen Kommentar, der das sagte), aber keine definitive Antwort:TEXT/BLOB in derselben Tabelle speichern oder nicht?
Das Problem ist: gibt es irgendwelche Leistungsvorteile, wenn Sie ein TEXT/BLOB-Feld speichern außerhalb eines Tisches?
Wir gehen davon aus:
- Sie richtig SELECT (nur die Auswahl des TEXT/BLOB, wenn erforderlich, keine SELECT *)
- Tabellen korrekt indiziert, wo es Sinn macht (so ist es nicht eine Frage der ' wenn Sie es indexieren ')
- Das Datenbankdesign ist nicht wirklich wichtig. Dies ist eine Frage, um das MySQL-Verhalten in diesem speziellen Fall zu identifizieren, nicht um bestimmte Datenbankentwurfsprobleme zu lösen. Nehmen wir an, diese Datenbank nur eine Tabelle (oder zwei, wenn die TEXT/BLOB getrennt wird)
- verwendet Motor: innoDB (andere auch interessant wäre, wenn sie unterschiedliche Ergebnisse holen)
Diese post states, dass das TEXT/BLOB in eine separate Tabelle zu bringen, hilft nur, wenn Sie bereits falsch auswählen (immer SELECT das TEXT/BLOB, auch wenn es nicht notwendig ist) - im Grunde, dass TEXT/BLOB in der Die gleiche Tabelle ist im Grunde die bessere Lösung (weniger Komplexität, keine Leistungseinbußen usw.), da das TEXT/BLOB unabhängig voneinander gespeichert wird
Die einzige Zeit, in der das Verschieben von TEXT-Spalten in eine andere Tabelle einen Vorteil bringt, ist die Tendenz, normalerweise alle Spalten aus Tabellen auszuwählen. Dies führt lediglich zu einer zweiten schlechten Übung, um die erste zu kompensieren. Es sollte selbstverständlich sein, dass die zwei Fehler nicht gleich sind wie drei Linke.
Dieser Beitrag jedoch heißt es:
Wenn eine Tabelle TEXT oder BLOB-Spalten hat, kann die Tabelle nicht im Speicher abgelegt werden
Bedeutet das, dass es bereits ausreicht, ein TEXT/BLOB in einer Tabelle zu haben, um eine Performance zu erzielen?
Meine Frage ist im Grunde: Was ist die richtige Antwort?
Ist es wirklich wichtig, wenn Sie TEXT/BLOB in einer separaten Tabelle speichern, wenn Sie SELECT
richtig?
Oder hat sogar ein TEXT/BLOB in einer Tabelle einen potenziellen Leistungshit?
Jede spezifische Speicher-Engine, die Sie verwenden? InnoDB/MyISAM/NDB, etc. – gertvdijk
@gertvdijk Ich habe es hinzugefügt - ich bin besonders interessiert an einer Lösung in Bezug auf InnoDB - aber im Grunde, wenn es einen Unterschied gibt, wäre MyISAM und andere Speicher-Engines auch interessant – Katai