MySQL 唯一键/索引使用什么数据类型

发布于 2024-10-21 07:35:46 字数 172 浏览 5 评论 0原文

MySQL中索引的数据类型可以用INT吗?我不确定这是否是最好的方法,因为我完全希望这个表能够获得大量条目,这些条目最终会“溢出” INT

我怀疑像 Facebook 这样的东西在诸如 wallpost 表之类的东西上使用 INT 作为索引或者其他会带来高流量/获得大量条目的东西。

有什么想法吗?

Is it ok to use INT as the datatype for the index in MySQL. I'm not sure if this is the best way to go as I fully expect this table to get a lot of entries that will eventually 'overflow' the INT

I doubt something like Facebook uses INT for their index on something such as the wallpost table or something else that would be high traffic / get lots of entries.

Any thoughts?

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

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

发布评论

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

评论(3

海拔太高太耀眼 2024-10-28 07:35:46

使用 INT( 11 ) UNSIGNED ZEROFILL NOT NULL

use INT( 11 ) UNSIGNED ZEROFILL NOT NULL

_蜘蛛 2024-10-28 07:35:46

一个 INT 最多可以超过 2 十亿(如果无符号则为两倍)。如果您希望表的行数超过此值,则可以使用 BIGINT(无符号数最多为 18,446,744,073,709,551,615 — 可能比 Facebook 的需要还要多)。

An INT can go up to over 2 billion (twice that many if unsigned). If you expect your table to have more rows than that, you can use a BIGINT (which unsigned goes up to 18,446,744,073,709,551,615—probably more than even Facebook needs).

夜深人未静 2024-10-28 07:35:46

一般来说,您有两种选择:

反映数据真实情况的“自然键”你正在工作。
例如,电话号码可能是呼叫列表的有效主键,但它根本不适合医疗保健受益人列表,因为许多人可能在家中共享相同的电话号码。请注意,自然键可能由多个字段组成。例如,品牌、型号和年份的组合可能是汽车型号列表的键。

另一方面,“代理键”只是您分配给排。如果您走这条路,我建议使用 GUID (MySql 中的 UUID)。 据我所知,在 MySQL 中表示这些内容的最佳方式是带有 char(36) 列。 GUID 实际上是永远唯一的并且可以无限次使用。

如果您坚持使用普通的旧数字,那么 INT 可能没问题,或者您可以使用 BIGINT 确实如此。

BIGINT UNSIGNED ZEROFILL

Generally speaking, you have two choices:

A 'natural key' that reflects the reality of the data you are working with.
For example, a telephone number might be a valid primary key for a calling list, but it would not be appropriate at all for, say, a list of health care beneficiaries because many people might share the same phone number in a home. Note that a natural key might be made up of more than one field. For example, the combination of Make, Model, and Year might be a key for a list of automobile models.

A 'surrogate key' on the other hand, is just an arbitrary value that you assign to a row. If you go that route, I'd recommend using a GUID (UUID in MySql). The best way that I know to represent those in MySQL is with a char(36) column. GUIDs are effectively unique forever and can be used infinitely.

If you insist on using a plain old number, then INT is probably fine, or you can use BIGINT to be really sure.

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