任务描述


需求描述

问题


第一条 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-23 09:31:38, 由 刘超 创建。
  2. 2023-02-23 14:17:14, 由 曾小龙 添加备注。

    时间:2023/02/23

    周二02/21已上线,只优化后端处理sql逻辑,无需测试

  3. 2023-02-23 14:17:34, 由 曾小龙 完成。
    修改了 总计消耗,旧值为 "0",新值为 "0.01"。
    修改了 指派给 ,旧值为 "zengxiaolong",新值为 "liuchao"。
    修改了 实际完成,旧值为 "",新值为 "2023-02-23 14:17:22"。
    修改了 任务状态,旧值为 "wait",新值为 "done"。
    修改了 实际开始,旧值为 "0000-00-00 00:00:00",新值为 "2023-02-23 14:17:34"。
    修改了 预计剩余,旧值为 "0.001",新值为 "0"。
    修改了 由谁完成,旧值为 "",新值为 "zengxiaolong"。
  4. 2023-02-24 09:16:17, 由 刘超 关闭。
    修改了 任务状态,旧值为 "done",新值为 "closed"。
    修改了 指派给 ,旧值为 "liuchao",新值为 "closed"。
    修改了 由谁关闭,旧值为 "",新值为 "liuchao"。
    修改了 关闭时间,旧值为 "0000-00-00 00:00:00",新值为 "2023-02-24 09:16:17"。
    修改了 关闭原因,旧值为 "",新值为 "done"。
所属迭代 技术研发中心 2月分支版本(2023年)
所属模块 /
相关需求 性能优化-关于价格计算器性能缓慢SQL统一处理
指派给 Closed 于 2023-02-24 09:16:17
任务类型 测试
任务标签 初始
开发组
任务状态 已关闭
进度 100%
优先级 P2
关键词
抄送给
由谁创建 刘超 于 2023-02-23 09:31:38
由谁完成 曾小龙 于 2023-02-23 14:17:22
由谁取消 暂无
由谁关闭 刘超 于 2023-02-24 09:16:17
关闭原因 已完成
最后编辑 刘超 于 2023-02-24 09:16:17
团队 最初预计 总计消耗 预计剩余
工时信息
最初预计 0.001工时
总计消耗 0.01工时
预计剩余 0工时
预计开始 2023-02-23
实际开始 2023-02-23
截止日期 2023-02-23