近来遇到一个比较困扰的优化问题,存储过程的主体逻辑如下:

ALTER PROC [dbo].[DBA_TroubleShooting]
AS
BEGIN
    DECLARE @StartTime DATETIME
    DECLARE @EndTime DATETIME
    SELECT @StartTime=CONVERT(VARCHAR,GETDATE()-1,112),@EndTime=CONVERT(VARCHAR,GETDATE(),112)
    DECLARE @Spreader VARCHAR(32)
    DECLARE loop_cursor CURSOR FOR 
    SELECT spreadAccount FROM dbo.SpreadStatisticsAccount ssa WITH(NOLOCK)
    --WHERE spreadAccount='LG0537' --分别用LG0537、LG0540测试
    OPEN loop_cursor;
    FETCH NEXT FROM loop_cursor INTO @Spreader
         
    WHILE @@FETCH_STATUS = 0
    BEGIN
        
        -- 日登录用户
        DECLARE @DayLoginUserNum INT
        SELECT @DayLoginUserNum = COUNT(DISTINCT ais.UserId)
        FROM dbo.AccountsInfoSimple ais WITH(NOLOCK)
        INNER JOIN dbo.UserLoginRecord t WITH(NOLOCK) ON ais.userID = t.userID
        WHERE ais.spreaderAccount = @Spreader AND ais.userType = 0
        AND t.loginDate BETWEEN @StartTime AND @EndTime AND t.typeCode = '02';
        
        SELECT @DayLoginUserNum    
        --注册、登录、充值、活跃数、游戏时长...
        --INSERT INTO dbo.SpreadAccountStatisticsNew(...)VALUES(...,@Spreader,@DayLoginUserNum,...)

        FETCH NEXT FROM loop_cursor INTO @Spreader
    END
    CLOSE loop_cursor;
    DEALLOCATE loop_cursor;        
END
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-09
  • 2021-11-18
  • 2022-12-23
  • 2021-09-26
  • 2021-12-11
  • 2021-10-09
  • 2022-12-23
相关资源
相似解决方案