Ist ein Blob effizienter als ein Varchar für Daten, die JEDE Größe haben können?

9

Beim Einrichten einer Datenbank möchte ich den effizientesten Datentyp für möglicherweise ziemlich lange Daten verwenden. Derzeit ist mein Projekt, Songtitel und Gedanken zu diesem Song zu speichern. Einige Titel können 5 Zeichen oder länger als 100 Zeichen sein und die Gedanken können ziemlich lang sein.

Ist es effizienter, einen auf 8000 eingestellten Varchar oder einen Blob zu verwenden? Ist die Verwendung eines Blobs mit einem Varchar identisch, da ihm eine festgelegte Größe zugewiesen wird, unabhängig davon, was er enthält? oder ist es nur ein Zeiger und es verbraucht nicht wirklich viel Platz auf dem Tisch? Gibt es eine bestimmte festgelegte Größe eines Blobs in KB oder ist es erweiterbar?

BillyNair
quelle

Antworten:

12

Ich würde vorschlagen, TEXT über BLOB zu verwenden.

Hauptunterschied

  • TEXT und BLOB werden außerhalb der Tabelle gespeichert, wobei die Tabelle nur einen Zeiger auf den Speicherort des tatsächlichen Speichers enthält.

  • VARCHAR wird inline mit der Tabelle gespeichert.

Primäre Richtlinie

  1. Textformatnachrichten sollten fast immer als TEXT gespeichert werden (sie sind beliebig lang).

  2. Zeichenfolgenattribute sollten als VARCHAR gespeichert werden (der Zielbenutzername, der Betreff usw.).


Die Auswahl, wann VARCHAR und wann TEXT verwendet werden soll, wurde ausführlich zum Stapelüberlauf in diesen Threads erläutert:

  1. MySQL: Großes VARCHAR vs. TEXT?

  2. MySQL varchar (2000) gegen Text?

Es gibt auch einen Leistungsvergleichsthread dafür im MySQL-Forum.

Ozair Kafray
quelle
Vielen Dank für diese Links. Sie beantworteten einige der Fragen, die ich hatte, und am Ende benutzte ich einen TEXT. Es war nicht genau das, wonach ich gesucht habe, was den physischen Speicherplatz auf dem Server betrifft, aber ich denke, solange es sich nur um ein kleines Projekt handelt, spielt es keine Rolle. Wenn ich später anfange, größere Projekte zu machen, muss ich das allerdings herausfinden.
BillyNair
0

Ich denke, Sie sollten blob nur verwenden, wenn Sie einen komplexen Datentyp serialisiert haben, dh wenn Sie eine komplexe Klasse in einer einzelnen Tabelle speichern möchten. Wenn Sie nur einen String (oder etwas Ähnliches) speichern möchten, verwenden Sie keinen Blob.

m3th0dman
quelle