Jan*_*nda 21 php mysql varchar database-design
可能重复:
MySQL表中varchar长度的重要性
使用VARCHAR时(假设这是短字符串的正确数据类型)大小是否重要?如果我将它设置为20个字符,是否会占用更少的空间或快于255个字符?
sym*_*ean 11
通常,对于VARCHAR字段,每个字段中存储的数据量决定了它在磁盘上的占用空间而不是最大大小(与始终具有相同占用空间的CHAR字段不同).
在900字节的索引的所有字段中存储的总数据存在上限(字符长度为900字节索引大小限制).
你创造的领域越大,人们就越有可能尝试用于你想要的目的以外的其他目的 - 显示价值所需的屏幕空间越大 - 所以尝试选择合适尺寸的好习惯而不是假设如果你尽可能大,它将节省你不得不重新审视设计.
ajr*_*eal 10
是的,在索引多个列时很重要.
前缀最长可达1000个字节(InnoDB表为767个字节).请注意,前缀限制以字节为单位,而CREATE TABLE语句中的前缀长度则被解释为字符数.在为使用多字节字符集的列指定前缀长度时,请务必考虑到这一点.
来源:http://dev.mysql.com/doc/refman/5.0/en/column-indexes.html
在latin1归类中,您只能指定3列varchar(255).
虽然可以指定最多50列varchar(20)
在没有适当索引的情况下,它会降低查询速度
在存储方面,它没有任何区别,
因为varchar立场variable-length strings
实际差异是:
TINYTEXT和其他TEXT字段与MySQL堆内的内存行分开存储,而VARCHAR()字段加起来限制为64k(因此TINYTEXT中可以有超过64k,而不能使用VARCHAR).
TINYTEXT和其他"blob-like"字段将强制SQL层(MySQL)在使用它们时使用磁盘上的临时表,而VARCHAR仍将在"内存中"排序(尽管将在整个宽度上转换为CHAR) .
InnoDB内部并不关心它是tinytext还是varchar.它很容易验证,创建两个表,一个使用VARCHAR(255),另一个使用TINYINT,并向两者插入记录.它们都将采用单个16k页面 - 而如果使用溢出页面,TINYTEXT表应显示为在"SHOW TABLE STATUS"中至少占用32k.
我通常更喜欢VARCHAR(255) - 它们不会对单行造成太多的堆碎片,并且可以在MySQL内存中作为单个64k对象处理.在InnoDB上,大小差异可以忽略不计.
| 归档时间: |
|
| 查看次数: |
20050 次 |
| 最近记录: |