我必须在现有查询中添加行号,以便跟踪已将多少数据添加到 Redis 中。如果我的查询失败,那么我可以从其他表中更新的那一行开始。
查询以从表中获取 1000 行后开始的数据
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (Order by (select 1)) as rn ) as X where rn > 1000
查询工作正常。如果有任何方法我可以在不使用 order by 的情况下获得行号。
select 1
这里是什么?
查询是否已优化,或者我可以通过其他方式进行。请提供更好的解决方案。
原文由 lucy 发布,翻译遵循 CC BY-SA 4.0 许可协议
无需担心在
ORDER BY
表达式中指定常量。以下引用自Itzik Ben-Gan
编写的 Microsoft SQL Server 2012 High-Performance T-SQL Using Window Functions (可从微软免费电子书网站免费下载):上面的意思是当你使用常量时不会执行排序。我强烈建议您阅读本书,因为
Itzik Ben-Gan
深入描述了窗口函数的工作原理以及在使用它们时如何优化各种情况。