varchar(255) v tinyblob v tinytext

后端 未结 3 792
北荒
北荒 2021-01-02 00:26

My side question is there really any difference between tinyblob & tinytext?

Buy my real question is what reason, if any, would I choose varchar(255) over tiny

相关标签:
3条回答
  • 2021-01-02 00:57

    You can't apply CHARACTER SET to TINYTEXT, but you can to VARCHAR(255)

    0 讨论(0)
  • 2021-01-02 00:58

    VARCHAR(255) is more SQL standard than tinyblob or tinytext. So your script, and application would be more portable across database vendors.

    0 讨论(0)
  • 2021-01-02 01:09

    Primarily storage requirements and memory handling/speed:

    In the following table, M represents the declared column length in characters for nonbinary string types and bytes for binary string types. L represents the actual length in bytes of a given string value.

    VARCHAR(M), VARBINARY(M):
    L + 1 bytes if column values require 0 – 255 bytes,
    L + 2 bytes if values may require more than 255 bytes

    TINYBLOB, TINYTEXT:
    L + 1 bytes, where L < 28

    Additionally, see this post:

    For each table in use, MySQL allocates memory for 4 rows. For each of these rows CHAR(X)/VARCHAR(X) column takes up the X characters.

    A TEXT/BLOB on the other hand is represented by a 8 byte pointer + a 1-4 byte length (depending on the BLOB/TEXT type). The BLOB/TEXT is allocated dynamicly on use. This will use less memory, but in some cases it may fragment your memory in the long run.

    Edit: As an aside, blobs store binary data and text stores ASCII, thats the only difference between TINYBLOB and TINYTEXT.

    0 讨论(0)
提交回复
热议问题