我有以下问题
DECLARE @recordingId INT = 1
SELECT TOP 100000 e.eventId, inst.*
FROM dbo.Event e
INNER JOIN fnGetInstruments(@recordingId, DEFAULT) inst ON e.instrumentId = inst.instrumentId
WHERE $PARTITION.PfEventByEventId(e.eventId) = @recordingId
ORDER BY eventId
OPTION (MAXDOP 1)
其中event是一个非常大的分区表,它用一个instrumentid链接每个eventid。它使用一个返回instrumentid表和一堆其他行的函数循环连接(以保持原始eventid顺序并避免排序)。
我得到以下执行计划
带假脱机表的执行计划
spool返回事件行数乘以 Jmeter 行数(!)努力加入。
为什么它使用一个懒惰的假脱机而不是索引假脱机?函数所查询的表已正确索引,但它选择使用我认为是次优的运算符。
另外,图中还显示了内存授予问题。为什么会这样?我该如何解决这个问题?
谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!