Un blob est-il plus efficace qu'un varchar pour des données de n'importe quelle taille?

9

Lors de la configuration d'une base de données, je souhaite utiliser le type de données le plus efficace pour des données potentiellement assez longues. Actuellement, mon projet est de stocker les titres des chansons et les réflexions relatives à cette chanson. Certains titres peuvent comporter 5 caractères ou plus de 100 caractères et les pensées peuvent durer assez longtemps.

Est-il plus efficace d'utiliser un varchar défini sur 8000 ou d'utiliser un blob? L'utilisation d'un blob est-elle identique à un varchar, en ce sens qu'il existe une taille définie qui lui est allouée indépendamment de ce qu'il contient? ou est-ce juste un pointeur et n'utilise pas vraiment beaucoup d'espace sur la table? Existe-t-il une certaine taille définie d'un blob en Ko ou est-il extensible?

BillyNair
la source

Réponses:

12

Je suggérerais d'utiliser TEXT sur BLOB.

Différence primaire

  • TEXT et BLOB sont stockés hors de la table avec la table ayant juste un pointeur vers l'emplacement de la mémoire réelle.

  • VARCHAR est stocké en ligne avec la table.

Ligne directrice principale

  1. Les messages au format texte doivent presque toujours être stockés sous forme de texte (ils finissent par être arbitrairement longs)

  2. Les attributs de chaîne doivent être stockés en tant que VARCHAR (le nom d'utilisateur de destination, le sujet, etc ...).


Pour choisir quand utiliser VARCHAR et quand utiliser TEXT a été largement discuté sur le débordement de pile dans ces threads:

  1. MySQL: grand VARCHAR vs TEXT?

  2. MySQL varchar (2000) vs texte?

Il existe également un fil de comparaison des performances pour cela sur le forum MySQL.

Ozair Kafray
la source
Merci pour ces liens. Ils ont répondu à certaines des questions que j'avais et j'ai fini par utiliser un TEXTE. Ce n'était pas exactement ce que je cherchais en ce qui concerne l'espace physique qu'il occupe sur le serveur, mais je suppose que tant que ce ne sera qu'un petit projet, cela n'a pas d'importance. Plus tard, si je commence à faire des projets plus importants, je devrai le savoir.
BillyNair
0

Je pense que vous ne devez utiliser blob que si vous avez un type de données complexe sérialisé, c'est-à-dire si vous voulez stocker dans une seule table une classe complexe. Si vous souhaitez uniquement stocker une chaîne (ou quelque chose d'équivalent), n'utilisez pas d'objet blob.

m3th0dman
la source