0
;WITH cte AS
(
SELECT DISTINCT
a.ID, a.code AS code, DATEPART(wk, INVCDATE) weekno,
(SELECT CONVERT(DATE, (SELECT CONVERT(DATEtime, v.invcdate) - DATEPART(dw, CONVERT(varchar, CONVERT(DATE, v.invcdate)))) + 1)) MinDateOfWeek,
(SELECT CONVERT(DATE, (SELECT CONVERT(DATEtime, v.invcdate) + (7 - DATEPART(dw, CONVERT(varchar, CONVERT(DATE, v.invcdate))))))) ADA
FROM
dbo.abc a
INNER JOIN
dbo.xyz b ON a.ID = b.ID
INNER JOIN
dbo.PLIST p ON a.ID = p.ID
INNER JOIN
dbo.VISITS v ON p.ID2 = v.ID2
INNER JOIN
dbo.UserList o ON o.ID = a.ID
)
SELECT
code, weekno, k.Id4, k.Id3, k.Id2, k.Id1, k.Id0
FROM
cte
CROSS APPLY
dbo.f_getmycount(ID, MinDateOfWeek, ADA) k
以上查询花费的时间太多。交叉应用表值函数花费太多时间
我需要交叉应用表值函数的建议是否有效。
任何帮助表示赞赏。
感谢
'f_getmycount()'是什么类型的函数?标量函数,内联表值函数或多语句表值函数?根据使用情况,我猜这不是标量,但我之前感到惊讶。 :) –
显示你的函数的(精简?)代码,并提供关于你的表和索引的一些细节。您是否尝试过分析执行计划? – Shnugo
嗨Ben, 它是一个表值函数。 @Shnugo - 我试过应用索引,并根据执行计划输入完成更改。它仍然有更多的时间。 – jitu