求助大神帮优化下SQL语句,老是提示超时

linliang127 2020-08-19 09:53:28


SELECT * FROM (SELECT [UserId],[UserBalance],[TotalAmount],[MissionAmount],[ToCardAmount],[UserGoldCoinBalance],[TotalGoldCoinAmount],[CreditScore],[CreatedAt],[CreatedUserId],[UpdatedAt],[UpdatedUserId],ROW_NUMBER() OVER(ORDER BY GETDATE() ) AS RowIndex FROM [UserAccount] WITH(NOLOCK) WHERE ( [UserId] = @UserId0 )) T WHERE RowIndex BETWEEN 1 AND 1
...全文
149 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiepangK 2020-08-27
  • 打赏
  • 举报
回复
为什么要ORDER BY GETDATE() 呢,不直接order by userId
吉普赛的歌 2020-08-27
  • 打赏
  • 举报
回复
-- UserId 是主键,只可能取一条记录出来,不需要那么多限制,越简单越好。
SELECT [UserId],
       [UserBalance],
       [TotalAmount],
       [MissionAmount],
       [ToCardAmount],
       [UserGoldCoinBalance],
       [TotalGoldCoinAmount],
       [CreditScore],
       [CreatedAt],
       [CreatedUserId],
       [UpdatedAt],
       [UpdatedUserId]
FROM   [UserAccount] WITH(NOLOCK)
WHERE  [UserId] = @UserId
linliang127 2020-08-19
  • 打赏
  • 举报
回复
非常感谢版主的及时回复,目前已处理,特别感谢!
Hello World, 2020-08-19
  • 打赏
  • 举报
回复
取随机记录? UserId应该有索引的吧
SELECT      TOP(1)  [UserId],
                    [UserBalance],
                    [TotalAmount],
                    [MissionAmount],
                    [ToCardAmount],
                    [UserGoldCoinBalance],
                    [TotalGoldCoinAmount],
                    [CreditScore],
                    [CreatedAt],
                    [CreatedUserId],
                    [UpdatedAt],
                    [UpdatedUserId],
                    NEWID() AS RowIndex
FROM        [UserAccount] WITH(NOLOCK)
WHERE       ([UserId] = @UserId0)
ORDER BY    RowIndex;

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧