Java 中 Mysql 的状态列用 int 还是用 varchar 好点

2022-03-17 00:51:55 +08:00
 lslvxy

2022 了,现在还是用 1 ,2 ,3 数字表示状态么,还是用英文表示呢

8798 次点击
所在节点    程序员
67 条回复
javapythongo
2022-03-17 14:58:00 +08:00
现在是用 varchar
lmmlwen
2022-03-17 15:02:11 +08:00
我怀疑这个论坛人的真实水平,可能只有菜鸡会上这个论坛吧,居然这么多人说用枚举,笑死人了
weizhen199
2022-03-17 15:42:52 +08:00
要不试试 bit
keepeye
2022-03-17 15:46:34 +08:00
居然这么多人说牺牲这点性能值得,这边牺牲一点那边牺牲一点,真当服务器不要钱啊
yibo2018
2022-03-17 15:49:43 +08:00
代码中肯定是用 enumerate ,方便管理使用
至于映射到 MySQL 是什么反而随意了,int varchar 都不差,MySQL 中的 enum 我没用过(没听过哈哈)

我觉得代码中一定要用 enumerate 去限制,这个很重要
raptor
2022-03-17 15:51:25 +08:00
其实吧,我通常用 CHAR ,固定一或两个字符可以表示很多状态了,也比 INT 直观一些,2 位 CHAR 比一个 64 位 INT 占空间还少,性能的话跟 INT 也没差,应该能比 VARCHAR 好。
dq19871123
2022-03-17 15:57:41 +08:00
考虑这个问题的前提是你的业务真的有那么大量,否则那点性能差异根本不是瓶颈,所以一般情况下你觉得什么顺手用什么,看什么顺眼用什么,甚至抓阄决定都可以。
binge921
2022-03-17 16:16:49 +08:00
数据量百万以上 建议 int 你会回来感谢我
sdxlh007
2022-03-17 16:19:51 +08:00
int+枚举
o00o
2022-03-17 16:31:07 +08:00
@lmmlwen 出来说说,只破不立非君子 讽而不教亦小人
go522000
2022-03-17 17:54:00 +08:00
先收藏,蹲答案。。。以前习惯用 1234 来表达不同的状态,后来遇到有客户流程随便改,用数字很容易混乱,现在项目习惯用 varchar 加字典来表示。
jtwor
2022-03-17 17:57:49 +08:00
tinyint
jjianwen68
2022-03-17 18:03:02 +08:00
用什么 varchar ,定长不是用 char 更合适吗
documentzhangx66
2022-03-17 19:26:35 +08:00
@lmmlwen 微软的蓝屏代码,本质是就是枚举。你觉得你比微软强?证明一下。
documentzhangx66
2022-03-17 19:32:39 +08:00
楼上说用枚举其实才是最正确的。原因是,枚举的本质,是对数据与意义,做强一致性约束。这种约束能强迫大家统一数据与规范,能提高整个系统的正确性与可靠性。当然,万事万物都有缺点,枚举的缺点是效率低,具体一点是,每次使用时,都要先查一下;如果需要创建新的状态,还要走一个申请流程,还要查一下是否重复或冲突。
sampeng
2022-03-17 19:42:58 +08:00
无论如何都是 enum 。。。自从我好多年前知道有 enum 这样的类型后,再不会设计 int 型数据表示状态。

可读性,约束性,比一切都重要。改 ddl 再 2022 年了不要太简单。无论是流程和工具,都是非常 easy 的事。但是让我去看一个 sql 满屏幕的 xx=1 ,xx=3.。我日他先人。。。
jiom
2022-03-17 19:56:48 +08:00
Java 用枚举类映射->数据库里是 tinyint~也没什么不可读性的~
Suaxi
2022-03-17 21:32:02 +08:00
枚举 + varchar
ricky077
2022-03-17 23:15:42 +08:00
@sampeng 说实话,当量达到一定数量的时候,改 DDL 非常头疼,一个不到 1000 万级的大表,需要停服,一个字段数据库跑 10 几分钟
xuanbg
2022-03-18 07:04:33 +08:00
tinyint ,写好注释就完事。

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

https://tanronggui.xyz/t/840907

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

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

© 2021 V2EX