小编Far*_*day的帖子

我能做些什么来加速这个 SQL 查询?

我在@Dems 的帮助下创建了这个 SQL 查询 :-)

这是一些细节,我试图制作一个 SQLFiddle,但我的变量一直出错......这在 Sql Server 2008 中有效......我的问题是,如何使我的查询更快?我知道我在这里做错了很多事情(重复嵌套查询),我希望让你们中的一位 SQL 专家来看看并帮助我从 30 分钟的执行时间内解决这个问题!:-S

我不确定您需要多少信息才能帮助我解决这个问题,请提出任何问题,我会尽快回复。抱歉,如果缺乏详细程度,我只是不知道您想要/需要知道什么!

查询背后的基本思想是,在游戏中,我想找到所有在一段时间内没有移动 5 个单位的玩家,他们在静止状态下开火并且在停止移动之前 60 分钟没有开火。查询有效,但AND NOT EXISTS在我补充说运行需要 16 秒之前,它的子句正在减慢速度!16 秒仍然是一个很长的时间,所以任何其他改进都会受到赞赏,但现在这是我自己的 POC 游戏(只是把零碎的东西放在一起),16 秒是可以接受的......

DECLARE @n INT , @DistanceLimit INT
SELECT  @n = 2 , @DistanceLimit = 5;

WITH    partitioned
          AS ( SELECT   * ,
                        CASE WHEN Distance < @DistanceLimit THEN 1
                             ELSE 0
                        END AS PartitionID
               FROM     EntityStateEvent
               WHERE    ExerciseID = '8B50D860-6C4E-11E1-8E70-0025648E65EC'
             ),
        sequenced
          AS ( SELECT   ROW_NUMBER() OVER ( PARTITION BY …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server tuning if-not-exists query-performance

5
推荐指数
1
解决办法
4922
查看次数