sqlnhibernate循环性能
本文关键字:性能 循环性 循环 sqlnhibernate | 更新日期: 2023-09-27 18:21:32
我有以下逻辑:
循环遍历一个id列表,获取关联的实体,对于该实体,循环遍历另一个ids列表,获取另一个实体。代码如下:
foreach (var docId in docIds)
{
var doc = new EntityManager<Document>().GetById(docId);
foreach (var tradeId in tradeIds)
{
var trade = new EntityManager<Trade>().GetById(tradeId);
if (doc.Trade.TradeId != trade.TradeId)
{
Document newDoc = new Document(doc, trade, 0);
new EntityManager<Document>().Add(newDoc);
}
}
}
我的问题主要是关于sql性能。显然,会有一堆selects
发生,也会有一些adds
发生。这样做是不是很糟糕?
相反,我应该使用session
并获得与ID列表匹配的所有实体的列表(使用1条select语句),然后循环吗?
这只取决于我的经验。但你可以自己测试。如果贸易实体不是很大,实体的数量也不会超过1000,那么阅读所有实体并在后面循环将是更好的选择。如果计数大于1k,那么最好调用带有联接临时表的存储过程,该临时表包含您的id。