2008-09-27 7 views
13

Ma question de côté existe-t-il vraiment une différence entre tinyblob & tinytext?varchar (255) v tinyblob v tinytext

Acheter ma vraie question est quelle raison, le cas échéant, je choisirais varchar (255) sur tinyblob ou tinytext?

Répondre

16

Principalement storage requirements et la manipulation/vitesse mémoire:

Dans le tableau suivant, M représente la longueur de la colonne déclarée en caractères pour les types de chaîne non binaires et d'octets pour les types de chaînes binaires. L représente la longueur réelle en octets d'une valeur de chaîne donnée.

VARCHAR (M), VARBINARY (M):
L + 1 octets si les valeurs des colonnes nécessitent 0 - 255 octets,
L + 2 octets si les valeurs peuvent besoin de plus de 255 octets

TINYBLOB, TINYTEXT:
L + 1 octets, où L

De plus, voir this après:

Pour chaque table en cours d'utilisation, MySQL alloue mémoire pour 4 lignes. Pour chacune de ces colonnes , la colonne CHAR (X)/VARCHAR (X) prend en haut des X caractères.

A TEXTE/BLOB d'autre part est représenté par un pointeur de 8 octets + un 1-4 longueur d'octet (selon le type BLOB /TEXT). Le BLOB/TEXT est attribué dynamiquement lors de l'utilisation. Cela utilisera moins de mémoire, mais dans certains cas, risque de fragmenter votre mémoire au cours de l'exécution longue de .

Modifier: En aparté, blobs stocker des données binaires et les magasins de texte ASCII, thats la seule différence entre TINYBLOB et TINYTEXT.

5

VARCHAR (255) est plus standard SQL que tinyblob ou tinytext. Ainsi, votre script et votre application seraient plus portables dans tous les fournisseurs de bases de données.

-8

Vous ne pouvez pas appliquer de caractères à TINYTEXT, mais vous pouvez VARCHAR (255)

+2

Il est pas vrai, vous pouvez appliquer le jeu de caractères à la fois VARCHAR et TINYTEXT (en mySQL), mais pas à TINYBLOB. –

Questions connexes