设计数据库表结构的字段类型时候, varchar(?) 里面的数字怎么确定?

2021-04-24 12:41:15 +08:00
 zealinux

看到之前公司的 DB 里,这些值应该是随便设的,

有很多数值: 100,125, 128,255,256,510,512,522...

现在需要规范一下,

现在这个数值一般怎么确定?

2380 次点击
所在节点    程序员
12 条回复
akira
2021-04-24 13:08:55 +08:00
根据实际情况来呀。。。
gBurnX
2021-04-24 13:21:27 +08:00
1.有很多东西,最大长度是有规范可查的,比如 URL 最大长度、路径最大长度、身份证最大长度、电话号码最大长度等等。

2.没有规范的,以及与业务相关的,建议先与业务人员、产品经理进行讨论。然后,在设备性能富足的情况下,尽量给讨论后定下的容量多加 50% ~ 200%。多留余量肯定没错。
fiypig
2021-04-24 13:32:12 +08:00
全部 128
Muninn
2021-04-24 13:46:10 +08:00
@gBurnX 说的对,主要根据业务。 当需要留富足的时候,如果接近 255 可以用 255,在某些数据库的某些引擎下,255 是一个临界值,会有一丢丢好处。
h82258652
2021-04-24 13:46:17 +08:00
直接 LONGTEXT 干,后面有问题再优化
ired
2021-04-24 16:33:03 +08:00
varchar 定义的长度的单位是字符。
<= 255 的,就用 255 。
原因是,varchar 底层存储需要有一个字节来记录字符数量,一个字节最多可以表示 255,大于 255 就需要有两个字节来表示。
> 255 的按照实际情况来。
zealinux
2021-04-24 16:52:45 +08:00
@ired 是不是> 255 的就用 varchar(511) ?
caliburn1994
2021-04-24 17:18:49 +08:00
你去看看 psql 定义的几个大小,挑合适的就好
ired
2021-04-24 18:09:56 +08:00
@zealinux 为啥时 511 ? 2 个字节 2^8 是 65536 - 1 65535 啊?所以 varchar 最大是 varchar(65535)
ired
2021-04-24 18:16:18 +08:00
@ired 写错了,2^8 => 2^16
zealinux
2021-04-24 21:40:36 +08:00
@ired 如果 256 < x < 512, 那就设置 varchar(512-1)? 需要减掉 1,512=2^8
clf
2021-04-25 10:19:53 +08:00
能 255 内的就 255,按照字段的最大值+50%~200%的余量。

varchar 在超过 255 的时候需要有两个字节的头部用于存储字符长度(类似于 TEXT ),低于 255 的时候只需要一个字节(类似于 TINYTEXT )

需要长文本的一般都是用非关数据库存储或者专门的 CMS 系统里。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772901

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX