MySQL主/外键大小?

发布于 2024-09-02 01:26:38 字数 245 浏览 5 评论 0原文

我似乎看到很多人在 MySQL 模式中任意分配大尺寸的主/外键字段,例如 WordPress 使用的 INT(11) 甚至 BIGINT(20)。

如果我错了,请纠正我,但即使是 INT(4) 也能支持高达 40 亿以上的(无符号)值。将其更改为 INT(5),您允许的值高达四万亿,这超出了您的需要,除非您可能将地理数据存储在 NASA/Google,但我相信我们大多数人都不会。

人们使用如此大尺寸的主键是否有原因?对我来说似乎很浪费...

I seem to see a lot of people arbitrarily assigning large sizes to primary/foreign key fields in their MySQL schemas, such as INT(11) and even BIGINT(20) as WordPress uses.

Now correct me if I'm wrong, but even an INT(4) would support (unsigned) values up to over 4 billion. Change it to INT(5) and you allow for values up to a quadrillion, which is more than you would ever need, unless possibly you're storing geodata at NASA/Google, which I'm sure most of us aren't.

Is there a reason people use such large sizes for their primary keys? Seems like a waste to me...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

栀子花开つ 2024-09-09 01:26:38

大小既不是位也不是字节。
只是显示宽度,即
当字段有 ZEROFILL 时使用
指定。

INT[(M)] [无符号] [ZEROFILL] A
正常大小的整数。有符号范围
是 -2147483648 到 2147483647。
无符号范围是 0 到 4294967295。

请参阅

The size is neither bits nor bytes.
It's just the display width, that is
used when the field has ZEROFILL
specified.

and

INT[(M)] [UNSIGNED] [ZEROFILL] A
normal-size integer. The signed range
is -2147483648 to 2147483647. The
unsigned range is 0 to 4294967295.

See this explanation.

温暖的光 2024-09-09 01:26:38

我认为没有任何充分的理由使用大于 32 位整数的数字来索引正常业务规模的数据库中的数据。他们中的大多数可能拥有数百万条记录(或这个数量级)。

I don't see any good reason to use a number larger than 32-bit integer for indexing data in normal business-sized databases. Most of them have maybe millions of records (or that order of magnitude).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文