[步骤]
(@CustomerID int,@tb_SKUs [Tb_StringIds] READONLY) SELECT * FROM RB_Product_Admin a(NOLOCK) INNER JOIN @tb_SKUs tmp ON a.SKU=tmp.Id AND a.CustomerID=@CustomerID

[结果]
[期望]
排查 查询数量 或者引入缓存 非必要不请求数据库
[步骤]
(@CustomerID int,@tb_SKUs [Tb_StringIds] READONLY) SELECT * FROM RB_Product_Admin a(NOLOCK) INNER JOIN @tb_SKUs tmp ON a.SKU=tmp.Id AND a.CustomerID=@CustomerID

[结果]
[期望]
排查 查询数量 或者引入缓存 非必要不请求数据库
| 由谁创建 | 袁慧斌 于 2024-10-11 16:54:58 |
|---|---|
| 影响环境 |
577 |
| 由谁解决 | 王地福 于 2024-10-11 18:00:04 |
| 解决版本 | |
| 解决方案 | 系统设计缺陷 |
| 由谁关闭 | 袁慧斌 于 2024-10-14 16:57:39 |
| 最后修改 | 袁慧斌 于 2024-10-14 16:57:39 |
| 相关Bug |
|---|
这个项目里面也没必要直接复制erp里面那种古老的方式吧。。
只用到了SKU,HasImitationCountry两个字段,Product_Admin表字段很多建议不要select *.
public async Task<List<string>> IsImitationCardAllSiteCode(List<string> skus, List<RB_Product> productList)
{
var productAdminResult = new List<RB_Product_Admin>(skus.Count); //await _productAdminRepository.GetProductAdminsBySKUsAsync(skus);
foreach (var batchSkus in skus.Chunk(500))
productAdminResult.AddRange(await _productAdminRepository.GetQueryable().Where(o => o.CustomerID == 1 && batchSkus.Contains(o.SKU)).Select(o => new RB_Product_Admin { SKU = o.SKU, HasImitationCountry = o.HasImitationCountry }).ToListAsync());
......