【问题标题】:rewrite OUTER APPLY to Join or whatever other than apply for testing Blazing SQL (GPU based)重写 OUTER APPLY 以加入或除申请测试 Blazing SQL(基于 GPU)之外的任何其他内容
【发布时间】:2021-11-02 04:52:57
【问题描述】:

感谢我的 previous questions 加快查询速度,感谢 a_horse_with_no_name 将我的函数重写为外部应用,这使我的查询运行速度已经快了 10 倍。但是,速度仍然不够快,无法做我想做的事。

现在,我正在尝试使用 GPU 来通过使用炽热的 SQL 来进一步加快速度。不幸的是,它返回“在当前 SQL 一致性级别下不允许使用 APPLY 运算符”......任何人都知道如何重写以下代码以加入或其他任何东西,以便我可以试用炽热的 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; 

【问题讨论】:

    标签: sql join gpu blazingsql


    【解决方案1】:

    有一个参数可以禁用这种连接.... 将 allow-loop-joins 设置为 true 然后你就可以做所有reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-11
      • 2013-05-31
      • 1970-01-01
      • 2021-07-09
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      相关资源
      最近更新 更多