如何解决从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 举报,一经查实,本站将立刻删除。