我正在运行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权威等其他方面对此进行了相当多的研究,我希望有人可以帮我调整一下。
如果您需要更多信息以提供合理的答案,请告诉我您可能需要的信息。
干杯,
乔