
插入数据要求工号转 ID 这个步骤,让他调接口去查这个映射,实际上这个查询也不慢,100ms ,反正是一次性操作,这个数据迁移做了再就不做了,查库查表区别不大
相关的公司只有 200 多人
按一个记录审批人+干系人 10 个人(很多了,一般流程才五六个节点)算,不缓存,200 条数据也就 2000 次调用
这个 4w 次我至今没想明白是怎么弄出来的,但是我终于明白 200 条单表操作 1 个小时没做完的原因了
整个逻辑是这样 ( 1 ) A 系统查询待办主表数据-A 系统查询审批记录(平均 1 个单 5 个流程节点)-查询 A 系统的人员工号-查询 B 系统的工号 ID 映射-插入最终数据(拼接为一条,这里插入是不涉及子表的)
不是有人再说怎么挖坑还不留痕迹么
多跟外包学学自然就会了
1 AoEiuV020JP 2023 年 9 月 22 日 见过类似的,不过我这边是安卓客户端所以影响不大,埋了好多年的坑后来优化的时候发现的, 就是 for 循环判断里的 i < getData().size(), 循环节里还有一堆 getData().get(i), 然后这个 getData()里面是完整读数据库, |
2 qGjL83Ro3i1gE1M3 2023 年 9 月 22 日 常规操作,我也遇到过。拼凑一个数组,三层嵌套里面全是 select 哈哈哈哈 |
3 lincanbin 2023 年 9 月 22 日 合格程序员其实是凤毛麟角的存在。 |
4 onikage 2023 年 9 月 22 日 via Android 强调外包同事啥意思?显得自己一些? |
5 Daniel17 2023 年 9 月 22 日 这跟外不外包没关系吧 |
| img src="https://cdn.v2ex.com/avatar/5141/1e1f/161642_normal.png?m=1462262183" class="avatar" border="0" align="default" alt="murmur" data-uid="161642" /> | 6 murmur OP @onikage 因为是实事求是 |
7 Narcissu5 2023 年 9 月 22 日 其实很多公司的大数据需求就是这么来的,你想如果查询接口每次都记录日志,一下子就有 40000 条数据可以分析了 |
9 coderluan 2023 年 9 月 22 日 如果楼主的逻辑成立,那责任人也应该是决定用外包的领导,或者给这个外包面试通过的同事哦。 |
10 Badlink 2023 年 9 月 22 日 逻辑没太懂,是说 “A 系统查询待办主表数据-A 系统查询审批记录(平均 1 个单 5 个流程节点)-查询 A 系统的人员工号” 这部分调了 count(代办住表数) * count(审批记录) * count(A 系统人员) 这些次数? |
11 nothingistrue 2023 年 9 月 22 日 这种错误,你只要搞代码评审,或者结对编程,那就很难出现。不把代码评审计入成本时间,或者把成本挤到下班时间,那就别怪搞出来神仙代码。 |
12 TWorldIsNButThis 2023 年 9 月 22 日 via iPhone 就是没做 batching ? |
13 bk201 2023 年 9 月 22 日 人家就是混口饭吃,也是朝不保夕,被开了还没赔偿,你还能对对方有什么要求。只能怪公司为了节省成本坑正式员工。 |
15 shmilypeter 2023 年 9 月 22 日 via iPhone 估计是连了几张表导致笛卡尔积乘了几次 |
16 gaifanking 2023 年 9 月 22 日 盲猜 200x200=4w |
17 devopsdogdog 2023 年 9 月 22 日 via Android 你就说能不能用吧! |
18 6c67461c562bdc 2023 年 9 月 22 日 好奇。。为什么要外包?不就是为了有个背锅的吗?现在不就是背锅时刻?只不过不知道为什么要喷他。。。。 |
19 kangmang92 2023 年 9 月 22 日 你优化优化不就来了 kpi 吗 |
20 nxcdJaNnmyF9O90X 2023 年 9 月 22 日 合格程序员其实是凤毛麟角的存在。 |
22 knva 2023 年 9 月 22 日 没事,代码和他有一个能跑就行 |
23 tf2 2023 年 9 月 22 日 你就说系统跑么跑起来吧! |
24 encro 2023 年 9 月 22 日 才查四万,小意思。400 万也很快查给他。。。 居然要跑 1 个小时,你们服务器是 0.5G 内存吗? |
25 gfswoquasfasd 2023 年 9 月 22 日 技术不行 你管外包啥事啊 |
26 explon 2023 年 9 月 22 日 插入一次查询 200 次,循环一下就是 40000 次 |
27 sun522198558 2023 年 9 月 22 日 我觉得挺正常,反正外包同事干着有一天没一天的活 能混就混吧。发奖金了也没人家的 |
29 nzynzynzy 2023 年 9 月 22 日 收拾客户之前供应商写 API 对接,不是按照日期范围和 ID 定位数据(是有这两个 API 的),而是把所有历史至今数据请求出来,然后 for 循环按照 ID 找到,每 3 小时运行一次,叹为观止。 |
30 diagnostics 2023 年 9 月 22 日 N + 1 ? |
31 murmur OP @diagnostics 外包一般是无理由换人,如果是第一周貌似钱都可以赖掉 |
32 grance 2023 年 9 月 22 日 我觉得插入一次就查一次很合理,毕竟你不能保证在执行过程中,数据不会发生变化。 你如果是单次的任务,其实可以写好批量更新的 sql 直接操作。而不是这么循环搞。 不值得为了单个需求写一个程序,编码测试时间足够处理数据了。 |
33 Erroad 2023 年 9 月 22 日 这个帖子评论区很好地举例说明了什么是事实,什么是观点 |
34 murmur OP @grance 低代码的数据库很复杂的,你看到的是一个表,背后不知道是个什么 id 的表名,每个 id 还有一个独立的数据权限,你可以插数据但是重建数据权限这部分很麻烦 |
35 runzekk 2023 年 9 月 22 日 # 31 人家说的是 n+1 次查询,你能想到补偿我也是醉了。 是搞技术的吗,还看不起外包呢。满罐不响,半罐格朗。 其实 lz 可以想一想为啥这种水平的能和你做同事,外包不是理由。 |
38 FakerLeung 2023 年 9 月 22 日 标题应该改成:一个用 macOS 的外包同事才符合你的身份 |
40 blackkkk 2023 年 9 月 22 日 先 sleep 以下,能跑起来,二期再优化,没什么毛病。 |
41 adimn 2023 年 9 月 22 日 看明白了能请外包的项目都是复杂的要死的项目, 每个 id 还有一个独立的数据权限,你可以插数据但是重建数据权限这部分很麻烦, 这我挺都没听过 |
42 rb6221 2023 年 9 月 22 日 所以给你挖了啥坑,是慢吗 如果他是故意的,那你发这个贴肯定是觉得他坏;如果他不是故意的,你发这个贴肯定是觉得他蠢。带上外包这个 tag ,那当然有拉偏架的嫌疑了,也不要怪大家嘴你 |
43 murmur OP |
45 jmc891205 2023 年 9 月 22 日 200 * 200 = 40000 |
46 qjbcnrs 2023 年 9 月 22 日 昨日新增用户功能。 前同事写的, 把所有用户查出来,if(日期=昨天)count++ |
47 Promtheus 2023 年 9 月 22 日 这是好事啊 如果让老板发现外包比你们还好使 ,你猜你的下场是啥。我发现别人比我菜我都是很开心的,又是美好的一天 |
48 cherryas 2023 年 9 月 22 日 看明白了,活又急,又全是坑,你需要的是能救火的大神. |
49 binge921 2023 年 9 月 22 日 没看到代码 我是不会评论的 狗头保命 |
50 diagnostics 2023 年 9 月 22 日 |
51 RainCats 2023 年 9 月 22 日 有没有可能这是新人写的代码,跟产品还是外包没有任何关系。 看着这段代码,我倒是想起当年刚入行写过一个三层 for 循环处理数据,印象中好像没有查库操作,换成现在,我直接一个 Map 映射处理,再 get |
52 imokkkk 2023 年 9 月 22 日 |
53 darkengine 2023 年 9 月 22 日 我见过一个接口里把符合条件的 id 找出来(大概几十个),然后在循环里: 连接数据库 -> 用一个 ID 查详情 -> 关闭数据库的 。。。。 |
55 broken123 2023 年 9 月 22 日 @AoEiuV020JP 哈哈 我就遇到过这种问题,一堆表情包存本地,存了本地数据库 ,就是这么干的 |
58 GeruzoniAnsasu 2023 年 9 月 22 日 |
59 ZZ74 2023 年 9 月 22 日 低代码啊。也许人家也是被坑的,鬼知道低代码里面弄得什么东西 |
60 simple2025 2023 年 9 月 22 日 看描述理解不了代码究竟是怎样的 |
61 jiuhuicinv 2023 年 9 月 22 日 能跑就行 |
62 simple2025 2023 年 9 月 22 日 不对啊,你这又不是直接查数据库,用的接口啊,只能怪你接口慢罗,谁知道你们有没有批量查询接口 |
63 o562dsRcFqYl375i 2023 年 9 月 22 日 @devopsdogdog hhhh 就在找你这句 |
64 cassyfar 2023 年 9 月 22 日 我的表几百万条查询几秒钟,你们是土豆服务器?要么花钱请好程序员,要么花钱上好服务。 |
65 murmur OP @chenqh ( 1 )需求为 A 系统的流程数据迁移到 B 系统,但是在 B 系统是只读的,A 系统已经停用不再产生数据也不再修改人员结构 ( 2 ) A 系统和 B 系统的人员的数据库主键都不是工号,但是同一个人工号在两个系统是相同的,人员同步每天半夜执行,也就是说白天上班期间人员的 ID 是不会变的,就算同步了也不会变 ( 3 ) A 系统采用查库获取数据,B 系统使用接口(访问接口需要 accessToken )插入数据 ( 4 )迁移的流程数据包括主表单、审批意见,每一个审批单包含 2 条主表记录和若干审批意见表中的记录(可以通过流程 ID 一次查出对应单据的所有审批意见) ( 5 )审批意见里的人员需要 A 系统 ID -> 工号 -> B 系统 ID 这样转换后才能插入,所以需要调人员查询接口 ( 6 ) B 系统插入新数据只需要调用一次插入接口( json post ) |
66 simple2025 2023 年 9 月 22 日 不对啊,就算没有批量,4W 次是怎么弄出来的,就算每条记录 10 个用户,查 A 系统 10 次,B 系统 10,也就 200*20=4000 次 |
67 kkbblzq 2023 年 9 月 22 日 和水平不行的人共事的确糟心;虽然 LZ 有点拉偏架,不过外包现状如此,不排除外包里有能人,但是外包的低门槛也导致里面菜的比例就是更多; |
69 bigjack 2023 年 9 月 22 日 200 条数据怎么插也不会查询数据库两万次吧 |
70 c6h6benzene 2023 年 9 月 22 日 JPA 的话感觉是没写 EntityGraph |
71 shyangs 2023 年 9 月 22 日 薯伺服器. 2000 年,一位名佛瑞德特的男子造了一台用 5 薯力的 Web 伺服器,伺服器每秒可以理 0.2 面求,也就是大概 5 秒才能理一完整的用求。 |
72 chuck1in 2023 年 9 月 22 日 op 公司现在也不招自社员工,统一用外包了吗。 |
73 opengg 2023 年 9 月 22 日 via Android 设计的问题不能光给一个人背,方案是谁出的,有没有 review ,如果都然后一个外包写那么锅是研发组长的 |
74 Bingchunmoli 2023 年 9 月 22 日 via Android @murmur 评价是外包啥都要,只要甲方能过就行, 市场都要有经验的,没经验的大多干外包,一部分转行,一部分自己找到非外包工作(但是有可能是项目外包) |
75 Yukirito1996 2023 年 9 月 22 日 @broken123 #56 我当年实习的时候, 就是 3 层 for 循环... |
76 roundgis 2023 年 9 月 22 日 via Android @nothingistrue 地方有屁的代 代不崩就通了 |
77 jones2000 2023 年 9 月 22 日 涉及到多这个表的查询,找 DBA 给 sql 或建好视图查询, 开发不管数据库这类的东西,哪是数据部门的事。 |
78 hobbitlhy 2023 年 9 月 23 日 哈哈,我要是干上外包了,我也这么写,反正都干外包了,能用就行。 |
79 lmw2616 2023 年 9 月 23 日 人和代码有一个能跑就行(●''●) |
80 baton 2023 年 9 月 23 日 via Android 目用低代就想著性能好,外包都是拼命的榨,哪有你化,能功能就不了。而且低代的底都不知道,一般公司的低代平台是不停迭代的,最始可能只能用笨方法功能,後期才有解方案。 |
nbsp; 81 kkwa56188 2023 年 9 月 23 日 说回来, 这既然是一次性操作, 4 万也不是什么大数目, 有那个功夫你嫌这嫌那 的, 人程序早跑完了 |
82 aulayli 2023 年 9 月 23 日 via Android 就问你代码能用不能?能用就行了,人家外包又没你们挣的多,程序能跑就可以了,站在外包人员的角度来说代码优化的再好他也是吃力不讨好,没必要浪费精力。真看不惯,找你们老板谈谈,让他招正式工别用外包了。 |
84 kltt22 2023 年 9 月 23 日 弄低代码的东西?不要说做,听听就感觉头大。 |
85 jianghu52 2023 年 9 月 23 日 我昨天还在做一个数据移行的工具,据说里面有 30w+的数据。还有各种关联表的查询。听完楼主的故事,我瑟瑟发抖。 |
86 yxzblue 2023 年 9 月 23 日 只要 不影响 服务,要什么问题吗? |
87 llsquaer 2023 年 9 月 23 日 以我多年外包经验来看...之前有协商没? 没有就按照能跑就行的原则..改得加钱 记得有一次接外包,数据库不让我动,只能查..有一个需要要批量加 100 多个分类信息.也就 100 多行,我只需要写入后的自增 id 去做映射..我把数据发给对方,过了一会儿我问好了没? 他说马上, 我迫不及待啊,就刷新数据表的去看..发现了神奇的事情, 这个分类是刷新一次多出现一行.....我估摸着难道是他手动在添加??? 所以牛不牛掰所谓..就问能跑不? |
88 0m9ionbP8wuvs8S3 2023 年 9 月 23 日 用国产化的东西就知道是什么类型项目了,外包不很正常?反正只要项目能跑就行了,出了大问题再说 |
89 KENNHI 2023 年 9 月 23 日 via Android 功能实现了吗?结果和预期一致吗?分配该任务时有明确的性能指标要求吗?如果上面都没问题的话,那他就没有任何问题,因为你也说了他是外包员工。 |
90 KENNHI 2023 年 9 月 23 日 via Android 当然,因为你是客户公司的职员,如果你认为该外包成员影响了你们公司的产品服务质量,或者该成员不具备本项目必须的技术能力,可以向上司报告要求解除与该外包人员的契约,或者要求劳务派遣公司更换人员,这也是客户的权利。 |
93 ljrdxs 2023 年 9 月 24 日 @murmur 这我怎么猜?代码、环境,我全都没。我也没动机替你 review 代码。 但是如果用 API ,SQL 技巧确实没用。我刚才说的是这个。 |
94 yoloMiss 2023 年 9 月 24 日 哈哈哈哈,怎么解释,算你倒霉。 |