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语句),然后循环吗?

sqlnhibernate循环性能

这只取决于我的经验。但你可以自己测试。如果贸易实体不是很大,实体的数量也不会超过1000,那么阅读所有实体并在后面循环将是更好的选择。如果计数大于1k,那么最好调用带有联接临时表的存储过程,该临时表包含您的id。