在MYSQL中,您可以为VARCHAR字段类型选择一个长度。可能的值是1-255。
但是,如果使用最大的VARCHAR(255)而不是VARCHAR(20),它的优点是什么?据我所知,条目的大小仅取决于插入字符串的实际长度。
大小(字节)= length+1
因此,如果在VARCHAR(255)字段中有“示例”一词,它将有8个字节。如果在VARCHAR(20)字段中有它,那么它也有8个字节。有什么关系?
我希望你能帮助我。提前感谢!
发布于 2009-08-11 18:38:06
退房:参考文献
简而言之,除非您在VARCHAR中超过255的大小,否则不会有太大的差别,因为VARCHAR的长度前缀需要另一个字节。
长度表示对存储在列中的数据的更多约束,而不是任何其他约束。这在本质上也限制了列的最大存储大小。IMHO,长度对于数据应该是有意义的。如果您存储的是一个社会保险#,那么将长度设置为128是没有意义的,即使如果您实际存储的只是一个SSN,那么它不需要花费任何存储费用。
发布于 2009-08-11 18:50:12
选择一个与性能无关的值小于最大值有许多有效的理由。设置大小有助于指示正在存储的数据类型,也可以充当验证的最后喘息形式。
例如,如果您正在存储一个英国邮政编码,那么您只需要8个字符。设置此限制有助于明确存储的数据类型。如果你选择255个字符,它只会混淆事情。
发布于 2009-08-12 20:10:54
我不知道mySQL,但在Server中,它将允许您定义字段,以便使用的字节总数大于实际可以存储在记录中的字节总数。这是件坏事。迟早,您将得到一个达到限制且无法插入数据的行。
设计数据库结构以考虑行大小限制要好得多。
另外,您不希望人们将200个字符放在最大值为10的字段中,如果这样做,则几乎总是错误的数据。
你说,我可以在应用程序级别限制这一点。但是数据不能仅仅从一个应用程序进入数据库。有时多个应用程序使用它,有时导入数据,有时从查询窗口手动修复数据(例如,更新所有记录以增加10%的价格)。如果这些其他数据源中的任何一个不知道您在应用程序中设置的规则,那么数据库中就会有坏的、无用的数据。数据完整性必须在数据库级别强制执行(这不会阻止您在尝试输入数据之前也进行检查),否则就没有完整性。此外,我的经验是,那些懒得设计数据库的人往往也太懒,以致于实际上没有在应用程序中设置限制,而且根本就没有数据完整性检查。
他们用一个词来形容没有数据完整性的数据库--毫无用处。
https://stackoverflow.com/questions/1262174
复制相似问题