一、现象:
最近项目遇到导入Excel数据,返回的相应很慢。再服务器上十几条的Excel数据,导入预览返回需要1分钟。这现象不正常吧?
二、分析
将后台读取的Excel数据并且在校验数据加上打印日志。通过分析发现,读取Excel的数据很快的,但是在校验的时候查询某一字段的时候,发现竟然要1-2秒。这不符合常规吧。通过查询该表的数据,发现数据量也不是特别多,该表的数据也才3、5w条。
三、解决
1、最后给该表加上索引,在涉及到校验查询的表都加上了索引。类似 ALTER TABLE `sku` ADD INDEX i_sku_code_userid (`Code`, `UserId`);
2、使用 Dictionary缓存已经查到的数据,避免二次查询数据库。
var dictSku = new Dictionary<string,ConSku>();
var skuInfo = new ConSku();
if (!dictSku.ContainsKey(sku.SkuCode))
{
skuInfo = new client().GetSkuByCodeForExcel(SkuCode, userId);
dictSku.Add(sku.SkuCode, skuInfo);
}
else
{
skuInfo = dictSku[SkuCode];
}