查询提示从存储过程插入

时间:2015-03-17 00:14:13

标签: sql-server performance stored-procedures sql-server-2014

我正在运行SQL Server 2014。

在下面的代码中,我有一个临时表(在代码中先前定义),它是从存储过程中填充的。存储过程的大多数参数都是标准数据类型,但@GroupLayoutSpecifications是一个表变量,它接受在存储过程中连接的小堆表。

INSERT #StandardizedResponses
    EXEC rpt.usp_QueryBuilder_GatherStandardizedResponses
              @Member, @OrgUnits, @Groups, @MeasureName, 
              @StartDate, @EndDate, @InstrumentTypeIDs, 
              @BackgroundDataIDs, @GroupLayoutSpecifications;

我遇到查询引擎的问题是无法有效估计存储过程可能返回的行数。它通常估计一行的回报,实际回报接近200k行。我相信这是导致计划后期tempdb溢出的原因。

是否可能是表类型参数导致查询引擎有些悲伤?如果是这样,我怎么能解决这个问题?

同样,有没有办法提示SQL Server,以下查询可能会导致大于预期的行数?

我已经通过MSDN,这个网站,SQL权威等其他方面对此进行了相当多的研究,我希望有人可以帮我调整一下。

如果您需要更多信息以提供合理的答案,请告诉我您可能需要的信息。

干杯,

0 个答案:

没有答案