当前位置:首页 >综合 >5000 行的 SQL 源代码,怎么读? 5000 行的怎么读 SQL 源代码

5000 行的 SQL 源代码,怎么读? 5000 行的怎么读 SQL 源代码

2024-06-29 05:45:36 [百科] 来源:避面尹邢网

5000 行的怎么读 SQL 源代码,怎么读?

作者:Lenis 代码 运维 数据库运维 今天的小 C 很不在状态。昔日的怎么读她,一大早肯定不会愁容满面,代码似乎像是怎么读星巴巴没有喝够的样子,兴奋不起来!11:30 了,代码很少听到她 HHKB 落键的怎么读清脆声,一定是代码遇到难题了!

[[429448]]

本文转载自微信公众号「有关SQL」,作者有关SQL。怎么读转载本文请联系有关SQL公众号。代码

5000 行的 SQL 源代码,怎么读? 5000 行的怎么读 SQL 源代码

今天的怎么读小 C 很不在状态。昔日的代码她,一大早肯定不会愁容满面,怎么读似乎像是代码星巴巴没有喝够的样子,兴奋不起来!11:30 了,怎么读很少听到她 HHKB 落键的清脆声,一定是遇到难题了!

5000 行的 SQL 源代码,怎么读? 5000 行的怎么读 SQL 源代码

“怎么,今天的热焦玛少了点劲儿嘛,感觉?”我走近了小 C。

5000 行的 SQL 源代码,怎么读? 5000 行的怎么读 SQL 源代码

“L, 面对着满屏的 SQL,谁都会提不起精神啊。何况这近 5000 行的代码,怎么看得过来嘛!看了中间忘了开头,看到结尾,前面的全忘光了,好烦呀” 小姑娘抱怨起来也是毫不拖泥带水。

“哟,恭喜你,遇到这么极品的 sp 啊。在我的印象里面,经历了两次重构之后,上千行的代码,就那么几个,今天被你遇到了。我看看是哪个”

“原本我以为很简单的一个 AddUpdate, 谁想逻辑这么复杂,牵扯的表也太多了,其中几个表还有上百个字段,这都没法看了” 小 C 的鼠标满屏的乱走,看得我 300 度的眼睛,有些吃力。

“你这一行一个字段,是你自己设置的吧,其实不需要那么格式化,反而更简单。你看啊,一个 Insert 被几十个字段隔成了两屏,容易造成思维停顿。两行搞定的事情,做复杂了。还显得代码量大,失去耐心。”

“那我还原成原先的格式,也有近 3000 多行,还是多啊”

“这阅读源代码啊,是有技巧的。我可以分享三点给你。分别是,通读,联想,批评。”

“第一点,通读,非技术性的通读。首先告诉自己,一遍读完就能通晓5000行代码细节,是不可能的事情。读代码前,耐心先行。接着就是开始第一遍的阅读。此时的代码走读,我们不停留在具体的技术末节上,比如 unpivot 的语法是怎么样实现的,为什么有里三层外三层的嵌套,为什么这里用了动态 SQL 去拼接。再比如,XML 的节点铺设,为什么要这么定义,共有多少层。这些留在最后。”

“我们在走读代码的时候,尤其是第一遍,首先要理清的是业务的数据流,比如订单是如何触发的,分别涉及到哪些主体,人,物,财,时间。知道这些数据流分别存在哪些表里,存储的先后顺序是什么,会记录哪些日志。我们的 sp 逻辑结构相对简单,一个事务一个存储过程。所以第一遍,通读,越快了解所有涉及到的业务过程,最重要。你也可以在手边,画画流程图,帮助记忆。”

看着小 C 若有所思的眼神,分明能感觉到她脑子里抽象的拧巴,因此顺手我画了一张上面的流程图。“第一遍走读代码,你能清晰的画出类似上面的图,知道这些数据存在哪里,就足够了。”

“嗯,原来是这样,难怪我老是连接不起来,看过了,脑子里留不下印象!那第二点呢?”

“第二点,需要联想,也就是想象力。看完第一遍,不要急着看第二遍,就在脑子里,回想第一遍的过程。把你认为创建一个订单需要记录的信息给标出来,尽可能详细的在流程图上标准细节,就好比人,在什么时候需要记录人的信息,需要检验人的信息;再比如货,什么时间段,要检查货的库存,要记录货的哪些属性,单价还是 SKU,怎么更新货的库存,更新失败了怎么办?”

“如果你看到长篇的 SQL ,还只停留在脑子里,不靠谱。工作记忆永远只有 15 分钟。读完一遍后,你被叫去开个会,回来你就可能记不清了。所以及时的倾倒出来你刚才读到的 SQL,多问问自己数据是怎么流转下来的,画好流程图,标准自己的想法,越清晰,问题越多,越有利下一遍的阅读...”

"我知道了,我知道了,就是带着问题,主动去寻找答案!"

“理解到位,就是这样。给自己找问题,千万别一遍看完代码,什么都没留下来。接着,你可以去阅读第二遍,第三遍,甚至是第四遍了”

"那还有第三点呢?" 小 C 似乎来劲了。

“第三点最重要,批评。如果你对读到的代码,没有任何要抱怨,没有任何疑惑,那说明还没理解到位。当你看到这些代码,你认为嗯,这段写的很好,这段写的在理,都是这些溢美之词,那完了,你没深入。你可能对 unpivot , cross apply, openXML, OffSet 读到真正实战版代码而感到兴奋,觉得这段 sp 就写的很好,那对 SQL 的认识就太肤浅了。”

“新闻界,会有很多评论家,对重大新闻做二次剖析,比如曹林,《时评写作十讲》的作者,擅长对每篇新闻做双面解析。既讲述原新闻作者的报道手法,也评价原作者的目的与动机,最后还补充自己的观点,非常有意思。”

“在我们编程这个圈子,也有很多书,专讲这方面的。我给你推荐几本吧,《编程珠玑》,《CLR Via C#》, 尤其是 SQL 数据库方面,《数据库索引设计与优化》,《Oracle 优化日记》,《T-SQL Querying》,《T-SQL 性能调优秘籍-基于SQL Server 2012 窗口函数》”

“这些书,非常基础,我自己看过不止一遍。可以快速帮你提高内功。且,书的优点在于,作者就像是代码评论家一样,告诉你为什么 SQL或者代码这么写,不如那样写来的高效,其中的原理是什么。这些都是你在分析具体代码时,可以学到的真正有用的东西。我们应该在任何一段 SQL 中都找到可以学习的地方,最好是找到这段代码的设计弱点,比如子查询嵌套太多,不简洁;比如筛选条件不够优化,需要代码重构,这就是第三点,批评的实质。”

“又推荐书啊,上次推荐的还没看完。” 

“书在用时,方恨少。”

 

责任编辑:武晓燕 来源: 有关SQL SQL源代码AddUpdate

(责任编辑:时尚)

    推荐文章
    热点阅读