项目组人刚刚走 , 别人都下班了,现在还有我和一个公司的财务MM。 本来想直接走的, 但是在项目中遇到一个编码 规范问题, 想来吐槽一下, 我几乎不在工作中吐槽的,
但是 这次强烈的吐槽一下。
我靠 无视SQL编码 规范啊!!!!!!!!!!!!!!!!!!!.
1 首先 编码几乎没有注释。需要 一段段的从代码 猜业务, 这个还好 我可以理解 , 毕竟可能项目紧张的。 但事后要补起来吧, 结果一看2年前的代码。 我。。。。 说好的注释呢????
2 仔细吧项目中测试数据 凑好, 把SQL语句debug 出来, 不得了, 200 多行的SQL 关联 4张表。 一看写SQL的人 不会行列转换.... 到这里还能理解。。。。。
3 把SQL 一分析 我靠 一个大大的陷阱, 或者是天坑! (陷阱还有性能上面的, 主要是 行列转换 只要扫描表一次, 这里他用的是标量子查询扫描 31次!!!!!!!)
原来的SQL 就不发了 这里把坑的原型说明下
with tab1 as ( select code from t_table )
select * from tab2
left join tab1 on tab2.code = tab1.code
where tab1.code is not null
left join 以 tab2 为基础,单后来用 tab1.code is not null 来过滤, 我靠明显的陷阱摸,这里left join 好不容易把 tab2 中不符合的数据提出来, 单在 where tab1.code is not null 中又把 提出的数据 舍弃掉, 还不如干脆不提出来, 直接用inner join 得了!!!
我靠, 基本的SQL规范啊...............
好了,下班走了.........