因为把公司 Mysql 一堆带 null 字段优化非空带默认值被骂

2021-04-15 11:08:42 +08:00
 AhogeK

刚来一家新公司注意到数据库里新建的表有一堆 null 值的字段,想数据量大会影响索引,项目也刚开我就改了下,然后就被训了,就说别动数据库,非不非空让前端去判断(我就想是前端判断啊,但后端不也要校验,数据库只是优化查询)但我没之声 而且好多字段都是中英混用,可难受死我这强迫症了 比如父 id fid 组织类型 orglx 行政区划代码 xzqh 行政区域编码却是 adcode [捂脸.jpg]

10767 次点击
所在节点    问与答
107 条回复
AhogeK
2021-04-15 14:34:30 +08:00
null 只是导火索 只是自己以前很少用 is null / is not null 公司里带 null 字段的有的是空串有的却是 null 的问题 就是不统一 null 是否影响索引是看场景 主要就是规范上比较难受 命名只是其中之一 公司所有的接口也不是按 RESTful 风格 统一 POST 明明用了 @RestController 却还要加个 @ResponseBody 还能在 Mapper 上看到 select * 跟大量内查询 感觉太随意了 不过看项目规模也确实没啥影响 嘿嘿
fiypig
2021-04-15 14:35:19 +08:00
不要随便动已上线的数据库 , 这个你要先沟通下 ,还有一般字段创建的时候就不应该有 null 存在...
AhogeK
2021-04-15 14:36:41 +08:00
@wuyazuofeiji 哈哈哈 是的 主要是项目初 一开始让我建我建一半 结果他们又自己建好了 我又自做聪明改了 怪 哈哈哈
AhogeK
2021-04-15 14:41:55 +08:00
@fiypig 没上线,上线肯定不能的乱动,我也动不了,就是刚开始的项目 会也都没开过 字段怎么定啥的,公司直接 copy 了老项目结构吧应该
fiypig
2021-04-15 14:45:32 +08:00
@AhogeK 那真的无话可说了 ,一般这属于优化这块, 不分青红皂白的训 那真的可笑了
bk201
2021-04-15 14:48:53 +08:00
你这种人容易惹出事情,不要手贱。
AhogeK
2021-04-15 14:51:36 +08:00
@bk201 确实 orz
imn1
2021-04-15 15:12:52 +08:00
我不担心你在这公司如何(事已至此),只担心你以后会如何
一句话、一个动作,让全体改代码,不管对不对,这情况能活着就很好了,你要明白你不是老大啊……
enderftt
2021-04-15 16:48:23 +08:00
@dallaslu 。。。我现在就是,某 ERP 产品,库里表就是 AAAAA AAAAB ACTLE 这种, 字段统一都是表后 2 位+001
比如 AA001 AA002 LE001 LE002
securityCoding
2021-04-15 16:48:32 +08:00
随便搞数据库字段容易被打哦
IGJacklove
2021-04-15 16:54:30 +08:00
不管怎么样改之前都得先和大家说一声吧,万一你这改了线上出了问题算谁的?
yingqi7
2021-04-15 16:56:29 +08:00
@cjw1115 会几个单词写几个,不会的拼音伺候哈哈哈哈
wakzz
2021-04-15 17:01:03 +08:00
@GGGG430 Null 值需要一个比特位做标识位,也就是说 8 个 Null 才用一个字节,而 int 类型一个 0 占用 4 字节,char 类型一个空值需要 1 字节的长度位表示,Null 值才是最省空间的方案。
另外你说的 mysql 规范,规范是人定的,很多场景下,Null 、空字符串是两种含义,技术是为了业务服务的,不能为了符合规范反而让业务更加复杂。
telung
2021-04-15 17:02:44 +08:00
新公司上班,不要总觉得自己比别的同事聪明
Rwing
2021-04-15 17:07:52 +08:00
这代码 走人吧
fkdtz
2021-04-15 17:16:32 +08:00
公司没规范是公司的问题,你不沟通直接改就是你的问题了。
Lemeng
2021-04-15 17:18:30 +08:00
好心办坏事,还是不懂的话,除非发需求
Lemeng
2021-04-15 17:19:11 +08:00
@Lemeng 好心办坏事,还是不动的好
iloveayu
2021-04-15 17:20:00 +08:00
不是你的屎,为什么要强吃
zengming00
2021-04-15 17:20:36 +08:00
@wakzz 我觉得从程序效率的角度看 int 类型应该是预先分配了空间的,因为一个表结构如果存储的数据长度不一致会导致查找效率降低,因此实际的情况大概率是一个 int 类型和一个 bool 类型标识同时存在,共同组成来表示 int 字段的 null

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

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

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

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

© 2021 V2EX