我经常遇到这样的列varchar(255),所以大概这是一种约定。255 是 2^8 - 1。那么 2^n - 1 的长度有什么“神奇”吗?或者只是特别是255?varchar某些特定长度是否有性能或存储优化优势?还是这只是旧智慧不再适用于当前版本的 MariaDB 和 MySQL?
varchar(255)
varchar
我偶尔会抱怨255。当然, “255”曾经有一些原因,但许多不再有效,甚至适得其反。
在 MySQL 中,有理由停止在 191、255、767、3071、64K 以及可能的其他值。有些依赖于 Engine,有些依赖于CHARACTER SET等。
CHARACTER SET
AVARCHAR存储为 1 或 2 字节长度加上足够的字节用于您指定的任何字符集中的当前文本。然而,选择 1 或 2并不仅仅由单个列驱动;它由总行大小驱动。也就是说,这不是使用 255 的有效借口。
VARCHAR
使用长度为
虽然我在咆哮...... CHAR(固定长度)很少被建议。并且几乎总是应该是CHARACTER SET ascii– country_code、postal_code、Y/N、M/F、MD5、UUID、base64 等(MD5 和 UUID 应该更进一步,但这是另一个咆哮。)
CHAR
CHARACTER SET ascii
盲目使用“255”的潜在负面影响:
CREATE TABLE
SELECTs
MEMORY
VARCHAR(255)
CHAR(255)
相关:不要盲目使用BIGINT所有数字。它需要 8 个字节。EvenINT是多余的,只有 4 个字节。请参阅MEDIUMINT、SMALLINT和TINYINT。请注意,(2)onINT(2)没有任何意义;它仍然需要 4 个字节。
BIGINT
INT
MEDIUMINT
SMALLINT
TINYINT
(2)
INT(2)