微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决从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
函数可以返回一个内联表并且比您可以加入它更好。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。