關于我的以前的問題,為了加快查詢速度,感謝a_horse_with_no_name將我的函式重寫為外層應用,使我的查詢運行速度已經提高了10倍。然而,這個速度仍然不足以完成我想要的任務。
現在,我正試圖使用GPU,通過使用blazing SQL來進一步提高速度。不幸的是,它回傳 "APPLY運算子在當前的SQL一致性水平下是不允許的" ... 有沒有人知道如何把下面的代碼改寫成join或其他什么,而不是apply,這樣我就可以給blazing SQL做個試驗?我將在試驗后公布速度的差異。
SELECT IIF (TargetTime.MinTime <= CLTime.MinTime , [Target] , [CL] )
FROM [defaultDB]. [dbo]. [Table1] AS M
JOIN(VALUES(0.003), (0. 0035), (0.004), (0.0045), (0. 005),(0.0055),(0.006),(0。 0065),(0.007),(0.0075),(0.008)) AS T([target])
ON 1 = 1
JOIN(VALUES(-0.003), (-0.0035),(-0. 004), (-0.0045), (-0.005), (-0.0055), (-0.006), (-0。 0065),(-0.007),(-0.0075),(-0.008),(-0.0085),(-0. 009),(-0.0095),(-0.01),(-0。 0105),(-0.011),(-0.0115)) AS C([CL])
ON 1 = 1
OUTER APPLY
(
SELECT MIN([time]) as MinTime
FROM [defaultDB].[dbo].[Table2] 。
WHERE [date] = M.[DATE]
AND [Start] >= M.Stime
AND [Time] <= M.ETIME
AND [H] > T.target
) as TargetTime
OUTER APPLY
(
SELECT MIN([time]) AS MinTime
FROM [defaultDB].[dbo].[Table2] 。
WHERE [date] = M.[DATE]
AND [Start] >= M.Stime
AND [Time] <= M.ETIME
AND L < C.CL
) as CLTime
WHERE [M]. [date] IN(20120307, 20120601, 20121109, 20130826, 20131002, 20140117, 20140122, 20140311, 20140529, 20140718, 20150619, 20151014, 20151022, 20160411, 20160516, 20160721, 20160818, 20160909, 20170127, 20170213, 20170921, 20171025, 20171229, 20180116, 20180315, 20180926, 20181022, 20181128, 20181211, 20190104, 20190329, 20190502, 20190521, 20190528, 20190611, 20190627, 20190823, 20190930, 20191104, 20191211, 20200214, 20200318, 20200529, 20200706, 20200828, 20201230, 20210112, 20210305, 20210318, 20210408, 20210525, 20210617, 20210625)
AND [Stime] >= 133000;
uj5u.com熱心網友回復:
有一個引數可以禁用這種連接....。 將allow-loop-joins設定為true,那么你可以做所有的reference
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/320172.html
標籤:
上一篇:不存在后的SQL查詢的連接結果
