我有一个逐级连接查询作为CTE链的一部分。这样运行正常,直到它按级别命中连接,这会导致查询超时。
上面的CTE返回250行,heirarchy的最大ldepth将在13-14级左右。
Integer.equals
查询可以返回的深度级数是否有限制?
答案 0 :(得分:2)
没有
Set WSHShell = WScript.CreateObject("WScript.Shell")
regkey = "HKLM\SYSTEM\CurrentControlSet\services\<registry entry of service you want to check>\Start"
servicestatus="4" ' 4 is disabled, 0 to 3 means automatic or manual service startup
On Error Resume Next
serviceIsOK = 0
If WSHShell.RegRead(regkey) = servicestatus Then
serviceIsOK = 1
End If
If serviceIsOK = 1 Then
'put positive response code here
ElseIf Err.Number <> 0 Then
Err.Clear
'put registry reading error code here
Else
'put negative response code here
End If
答案 1 :(得分:2)
级别数受运行时可用内存的限制。从这个角度来看,13-14级是超级安全的。
如果没有其他并发症且问题只是“太多级别&#34;”,则会相对较快地达到内存限制,并在发生这种情况时收到错误消息。如果您的查询运行了很长时间,则必须有其他原因。
最可能的嫌疑是一个不完整的CONNECT BY子句,你没有足够的条件,并且在每个级别都生成了太多的行。这可以在相对较低的级别生成非常多的行。