Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查询日期范围内每个日期的某些数据的最有效方法是什么_C#_Sql Server_Task Parallel Library - Fatal编程技术网

C# 查询日期范围内每个日期的某些数据的最有效方法是什么

C# 查询日期范围内每个日期的某些数据的最有效方法是什么,c#,sql-server,task-parallel-library,C#,Sql Server,Task Parallel Library,我有一个需求,其中有一个内联表值SQL函数,它接受日期作为参数并返回一个resultset。 现在,我必须得到一个日期范围内每个日期的结果集 单次执行该函数大约需要2-3分钟,因此如果我们运行该函数一个月,将需要大约1小时来完成执行 select dateValue ,col1 ,col2 ,col3 from dbo.GetResultSet('2020-01-01') union all select dateValue ,col1

我有一个需求,其中有一个内联表值SQL函数,它接受日期作为参数并返回一个resultset。 现在,我必须得到一个日期范围内每个日期的结果集

单次执行该函数大约需要2-3分钟,因此如果我们运行该函数一个月,将需要大约1小时来完成执行

select 
    dateValue
    ,col1
    ,col2
    ,col3
from dbo.GetResultSet('2020-01-01')

union all

select 
    dateValue
    ,col1
    ,col2
    ,col3
from dbo.GetResultSet('2020-01-02')

union all

select 
    dateValue
    ,col1
    ,col2
    ,col3
from dbo.GetResultSet('2020-01-03')
... 
所以我正在寻找一些创新的方法来优化它

我尝试创建一个包含所有日期的UNIONALL查询,希望能够实现并行执行

select 
    dateValue
    ,col1
    ,col2
    ,col3
from dbo.GetResultSet('2020-01-01')

union all

select 
    dateValue
    ,col1
    ,col2
    ,col3
from dbo.GetResultSet('2020-01-02')

union all

select 
    dateValue
    ,col1
    ,col2
    ,col3
from dbo.GetResultSet('2020-01-03')
... 
但这会产生以下错误:

查询处理器耗尽了内部资源,无法运行 生成查询计划。这是一个罕见的事件,只有在 非常复杂的查询或引用非常大的 表或分区的数量。请简化查询

还请注意,日期范围也可以为1年

我还尝试编写C#,使用
Parallel.ForEach
以不同的日期运行此函数,但这会导致连接超时异常

我正在使用SQL Server 2012


任何建议或帮助都将不胜感激。

如果不查看查询,不了解所涉及的表结构和索引,加快查询速度是不容易的。第一步应该是检查执行计划。向数据库抛出线程是最糟糕的方法,创建更好的sql函数应该是您的第一步choice@DaleK该函数在应用程序的几乎所有模块中都广泛使用,假设我们无法修改该函数。这不会提供任何其他信息来帮助您-向我们展示执行计划。您可以在不更改函数的情况下向表中添加索引。Hi@DaleK函数的执行计划为297 MB,不知道如何共享。有什么建议吗?