加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

十年DBA老兵:鉴戒,重Java轻SQL乃机能大忌

发布时间:2017-09-22 22:45:44 所属栏目:建站 来源:DBAplus社群
导读:副问题#e# 作者:黄浩 简介:从业十年,始终专注于 SQL。十年一剑,十年磨砺。3 年通讯行业,写就近 3 万条 SQL;5 年制造行业,飞舞在 ETL 的海潮;2 年机能优化,厚积薄发自成一家。 注:《SQL机能优化与批驳》是黄浩先生的系列新作,他将从过往在项目技

为了实现这种布局转换,其时的架构计划如下:

  1. 通过 SQL 从 DB 获取每个里程碑、交付地区的 plan_start_time、plan_end_time、actural_start_time、actural_end_time 及 du 荟萃,即 SQL 中的 wm_concat 拼集后的功效。

  2. Java 应用措施拿到这个功效后,轮回功效集,并依次解析由 wm_concat 拼集的内容:

  • 计较每一个里程碑内 DU 的均匀时距离断;

  • 判定里程碑的前后置相关;

  • 计较前后置里程碑间的天数隔断;

  • 最终将计较功效展此刻前端页面。

水到渠成,一战而定

从上述描写中,我们可以提炼出如下信息:

  • WM_CONCAT 拼集的内容只是过渡的,在 Java 中还必要依次解析。

  • Java 处理赏罚的几个步调完全可以由 SQL 来实现。这样就可以省却以下几个“贫困”:

  1. 省却了大量数据从 DB 传输到 Java 处事器的本钱开销。

  2. 可以顺理成章的拔掉 wm_concat 这根刺。

那么,假如用 SQL 来实现上述逻辑成果,存在两个难点,其一是怎样判定里程碑(task_name)前后置相关,其二是计较前后置里程碑的时刻差。

进一步说明后发明,里程碑(task_name)前后置相关可以通过 SQL 来获取,而在时距离断的计较上,可以通过 lead 窗口说明函数获取后置时刻,然后相减即可。

改革后的 SQL 如下:

十年DBA老兵:借鉴,重Java轻SQL乃性能大忌

将 SQL 在 DB 中运行,不到 3 秒就执行完成。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读