业务需求
需求描述

问题


第一条 1.去除 Charsplitforin ,采用表传值的方式 2.针对价格计算器的调用是否能采用缓存

(@CountryID int,@CustomerID int,@TransportIDs nvarchar(44)) SELECT ac.AreaID,                                                     ac.ProvincesCN,                                                     Country_cn,                                                     Shorthand,                                                     ac.CustomerID,                                                     CountryID,                                                     tf.TransportID,                                                     ra.AreaName,                 isnull(ra.AreaType,1) as AreaType,                 ac.PostCodeAccurat,                 ac.PostCodeSection,                                                     tf.Factor                                              FROM   RB_Transport_Fee tf WITH(nolock)                                                     INNER JOIN RB_Area ra (nolock)                                                       ON tf.AreaID = ra.ID                                                            AND tf.CustomerID = ra.CustomerID                                                     INNER JOIN RB_Area_Country ac (nolock)                                                       ON tf.AreaID = ac.AreaID                                                          AND ac.CustomerID = tf.CustomerID                                                     LEFT JOIN dbo.E_Country e WITH(nolock)                                                       ON e.ID = ac.CountryID                                                     LEFT JOIN RB_Transport t(NOLOCK) ON tf.TransportID=t.ID AND  tf.CustomerID=t.CustomerID AND tf.SupplierID=t.DefaultSupplierID                                              WHERE 1=1 AND t.DefaultSupplierID>0  AND CountryID=@CountryID AND tf.CustomerID=@CustomerID AND tf.TransportID IN (SELECT CAST(item AS INT) FROM dbo.CharSplitForIn(@TransportIDs,',')) ORDER  BY tf.ID ASC
第二条 1.去除 Charsplitforin ,采用表传值的方式 2.针对价格计算器的调用是否能采用缓存
(@CustomerID int,@IsActive int,@IDs nvarchar(4))SELECT [ID],                                         [CustomerID],                                         [WareHouseName],                                         [WareHouseType]                                  FROM   RB_WareHouse (NOLOCK)                                  WHERE  CustomerID = @CustomerID                                         AND IsActive= @IsActive  AND ID IN (SELECT CAST(ITEM AS INT) FROM  Charsplitforin(@IDs, ',')) 

第三条 1.去除Charsplitforin 函数 采用表传值的方式。2.校验是否能合理的采用缓存
(@CustomerID int,@RuleIDs varchar(max) )SELECT [ID],[CustomerID],[RuleTitle],[WareHouseRuleType],[WareHouseType],[TransportRuleType],[TransportIDs],[IsRegistered],[TransferType],[RequiredTimeLimit],[IsCheckStock],[PriceMatchType],[IsActive],[AddAdminID],[AddUserName],[AddTime],[UpdateAdminID],[UpdateUserName],[UpdateTime],[OrderSourceType],[MatchOrderStatus]              FROM   RB_AutoMatchWarehouseAndTransportRule wat(nolock)              WHERE  CustomerID = @CustomerID  AND   ID in (SELECT CAST(ITEM AS INT) FROM  Charsplitforin(@RuleIDs, ','))

第四条 针对CustomerID 的值判断,如果只有一个,请用等于。2 去除Charsplitforin 函数 采用表传值的方式。3.校验是否能合理的采用缓存
(@TransportIDs nvarchar(24))SELECT t.ID AS TransportID,                                                  t.CustomerID,                                                  t.TransferAttribute,                                                  t.DefaultSupplierID,                                                  t.EnableWeightSize,                                                  t.LengthSize,                                                  t.WidthSize,                                                  t.HightSize,                                                  t.PerimeterSize,                                                  t.CustomLength,                                                  t.CustomWidth,                                                  t.CustomHeight                                           FROM   RB_Transport t WITH(NOLOCK)                                           WHERE  t.CustomerID IN (1)                                                  AND t.ID IN ( SELECT CAST(ITEM AS INT) FROM Charsplitforin(@TransportIDs, ',') )                                                  AND t.IsActive = 1



目标

1针对所有IN 的内容判断数量,如果只有一个 采用等于。如果是多个用表传值的方式。2.重点查看是否可以采用等于,以减少对数据库的依赖。


优化方案

4个查询sql结果放到服务端缓存,缓存时效60分钟。每次有从缓存读取数据,如果缓存没有数据,则先读取数据库的数据放到缓存

验收标准
价值描述
优化系统性能;
历史记录  
  1. 2023-02-21 18:19:33, 由 田子豪 创建。
  2. 2023-02-21 19:35:29, 由 田子豪 添加备注。
    4个SQL,每个1.5H,共6H
  3. 2023-02-21 19:44:57, 由 李会云 记录评审结果,结果为 确认通过。
  4. 2023-02-22 09:04:52, 由 田子豪 关联到迭代 技术研发中心 2月分支版本(2023年) 。
  5. 2023-02-22 09:04:55, 由 赵鹏 关联到迭代 技术研发中心 3月第1版本(2023年) 。
  6. 2023-02-22 09:16:21, 由 田子豪 编辑。
    修改了 指派给,旧值为 "lihuiyun",新值为 "chengwei"。
  7. 2023-02-22 09:17:42, 由 田子豪 编辑。
    修改了 关键词,旧值为 "",新值为 "2月23"。
  8. 2023-02-22 09:19:01, 由 周杰 从迭代 #687 技术研发中心 3月第1版本(2023年) 移除。
  9. 2023-02-28 16:14:43, 由 刘超 指派给 田子豪。
    修改了 指派给,旧值为 "chengwei",新值为 "tianzihao"。
  10. 2023-03-01 15:04:54, 由 周杰 编辑。
    修改了 所处阶段 ,旧值为 "tested",新值为 "released"。
    修改了 设置阶段者,旧值为 "",新值为 "zhoujie"。
  11. 2023-03-28 11:27:56, 由 李会云 关联到发布 发布上线:上线版本_20230316。
  12. 2023-03-29 13:59:09, 由 田子豪 关闭,原因为 已完成 。
    修改了 由谁关闭,旧值为 "",新值为 "tianzihao"。
    修改了 关闭日期,旧值为 "0000-00-00 00:00:00",新值为 "2023-03-29 13:59:09"。
    修改了 指派给 ,旧值为 "tianzihao",新值为 "closed"。
    修改了 当前状态,旧值为 "active",新值为 "closed"。
    修改了 所处阶段,旧值为 "released",新值为 "closed"。
    修改了 关闭原因,旧值为 "",新值为 "done"。
  13. 2023-11-16 20:27:21, 由 周杰 编辑。
    修改了 所属模块,旧值为 "1742",新值为 "1854"。
迭代版本 2023年2月第2个迭代
提报业务部门
提报人员 产品
需求来源 公司战略需求
所属项目 技术中心-需求池
所属模块 供应链   仓储物流
所属计划
业务价值
开发组
受益业务部门 技术研发中心
验收人员
业务目标类型
中心业务目标
业务价值 提升人效
每月价值量 提升系统效率
每月节省人数 0
优先级 P2
价值类型
预计工时 6
成本
ROI
操作手册 否
高价值
主被动
复杂度
工作流ID
工作流创建时间
更新点
是否高危 否
评分
当前状态 已关闭
所处阶段 已关闭
关键词 2月23
评审次数
计划上线
上线时间 2023-02-23
计划验收时间
业务验收时间
满意度
价值验收
满意度分值
业务回填价值
验收达成价值
验收达成ROI
抄送给
由谁创建 田子豪 于 2023-02-21 18:19:32
指派给 Closed 于 2023-11-16 18:57:28
由谁评审 李会云
评审时间 2023-02-21
由谁关闭 田子豪 于 2023-03-29 13:59:09
关闭原因 已完成
最后修改 周杰 于 2023-11-16 20:27:08