Un BLOB è più efficiente di un varchar per i dati che possono avere QUALSIASI dimensione?


9

Quando si configura un database, desidero utilizzare il tipo di dati più efficiente per dati potenzialmente abbastanza lunghi. Attualmente il mio progetto è quello di archiviare titoli e pensieri relativi a quella canzone. Alcuni titoli potrebbero contenere 5 caratteri o più di 100 caratteri e i pensieri potrebbero durare piuttosto a lungo.

È più efficiente usare un varchar impostato su 8000 o usare un BLOB? L'uso di un BLOB equivale a un varchar, in quanto esiste una dimensione impostata che viene allocata indipendentemente da ciò che contiene? o è solo un puntatore e non utilizza molto spazio sul tavolo? Esiste una determinata dimensione impostata di un BLOB in KB o è espandibile?

Risposte:


12

Suggerirei di usare TEXT su BLOB.

Differenza primaria

  • TEXT e BLOB vengono archiviati dalla tabella con la tabella che ha solo un puntatore alla posizione della memoria effettiva.

  • VARCHAR è memorizzato in linea con la tabella.

Linee guida primarie

  1. I messaggi in formato testo dovrebbero essere quasi sempre archiviati come TESTO (finiscono per essere arbitrariamente lunghi)

  2. Gli attributi di stringa devono essere memorizzati come VARCHAR (il nome utente di destinazione, l'oggetto, ecc ...).


Per scegliere quando usare VARCHAR e quando usare TEXT è stato ampiamente discusso su Overflow dello stack in questi thread:

  1. MySQL: grande VARCHAR vs. TEXT?

  2. MySQL varchar (2000) vs text?

C'è anche un thread di confronto delle prestazioni per questo sul forum MySQL.


Grazie per quei link. Hanno risposto ad alcune delle mie domande e alla fine ho usato un TESTO. Non era esattamente quello che stavo cercando per quanto riguarda lo spazio fisico che occupa sul server, ma immagino che sarà solo un piccolo progetto, non importa. Più tardi, se comincio a fare progetti più grandi, dovrò scoprirlo.
BillyNair,

0

Penso che dovresti usare BLOB solo se hai un tipo di dati complesso serializzato, cioè se vuoi archiviare in una singola tabella una classe complessa. Se si desidera solo archiviare una stringa (o qualcosa di equivalente) non utilizzare il BLOB.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.