MySQL 中的数字类型和行大小
我有一个如下结构的用户表:
- id MEDIUMINT(7),
- username VARCHAR(15)
如果我将其更改为这样,技术上会更快吗:
- id MEDIUMINT(5),
- username VARCHAR(15)
我很困惑,因为即使虽然字符和数字的总行长度会更短,但我假设使用的字节数是相同的。
I have a user table structured like this:
- id MEDIUMINT(7),
- username VARCHAR(15)
Would it technically be faster if I changed it to this instead:
- id MEDIUMINT(5),
- username VARCHAR(15)
I'm confused because even though the total row length in terms of characters and digits would be shorter, I assume the number of bytes used would be the same.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这只是一个显示宽度。如果您使用 MEDIUMINT(5),它不会比仅使用 MEDIUMINT 使用更少的资源。谢谢你的提问。我有同样的问题。
参考:
12.2.5 数字类型属性
It's just a display width. If you use MEDIUMINT(5), it does not use small resource than just using MEDIUMINT. Thanks you for your question. I have a same question.
Reference:
12.2.5 Numeric Type Attributes
您是对的 - 指定的位数不会更改 MEDIUMINT 列用于保存值的字节数。实际上,没有速度性能。
参考:
You're correct - the number of digits specified does not change the number of bytes that a MEDIUMINT column will use to hold the value. Effectively, there's no speed performance.
Reference:
MEDIUMINT 之后的参数对其存储或其支持的值范围没有影响。这只是显示宽度的提示。大多数情况下,这仅在您使用 ZEROFILL 选项时才相关。
MEDIUMINT 始终为三个字节。
The argument after MEDIUMINT makes no difference to its storage or the range of values it supports. It's only a hint for display width. Mostly this is relevant only when you use the ZEROFILL option.
MEDIUMINT is always three bytes.
不,不会更快。 MEDIUMINT后面的数字就是显示宽度。它仅影响查询结果在某些上下文中的显示方式。
No, it would be no faster. The number after MEDIUMINT is just the display width. It affects only the way in which query results are displayed in some contexts.