从LINQ到SQL调用UDF和proc的效率如何?

| 我遇到一个问题,需要在LINQ to SQL中调用UDF,然后在其中调用另一个存储过程。这是代码。
    public IQueryable<DataDTO> GetLotsaData(string dataId, DateTime date, string custIDs)
    {
        var data = (from rs in _context.spXI_GetData(dataId, date, custIDs)
                          select new DataDTO
                          {
                              Time = rs.Time,
                              TimeZone = _context.GetTimezone(postDate, _context.GetDetailedData(rs.PKID, custIDs).FirstOrDefault().Zip),
                              CompletedTime = rs.Completed_Time,
                          });

        return data.AsQueryable<DataDTO>();
    }
我担心的那一行是调用GetTimezone UDF的那一行。在LINQ查询中间调用UDF然后在另一个存储过程(GetDetailedData)中获取该UDF的单个值是否效率低下?这将生成哪种SQL? 在我看来,它有点令人费解,但仍然比选择子存储或加入存储过程的替代方法更好。 (我试图避免让存储过程返回新字段TimeZone,而只是将其返回到DTO中。)是的,我意识到,如果我们使用UTC,则可以避免一切。可悲的是,我对此无能为力。     
已邀请:
为什么spXI_GetData无法返回完整的结果集?我想说这在这种情况下是最佳的。     
spXI_GetData
集中的每一行将调用
GetTimezone
GetDetailedData
函数。如果
GetTimezone
函数可以返回一个内联表并且比您可以加入它更好。     

要回复问题请先登录注册