TSQL 从表中选择最后 10 行?
Posted
技术标签:
【中文标题】TSQL 从表中选择最后 10 行?【英文标题】:TSQL to select the last 10 rows from a table? 【发布时间】:2011-06-26 17:42:57 【问题描述】:我有一个包含 3 亿行的表,并且在 [DataDate] 列上有一个聚集索引。
如何选择此表的最后 10 行(我想在表中查找最近的日期)?
数据库:Microsoft SQL Server 2008 R2。
更新
下面的答案完美无缺 - 但前提是 [DataDate] 上有聚集索引。毕竟,该表有 3 亿行,一个简单的查询最终会花费数小时而不是几秒钟来执行。查询计划使用 [DataDate] 上的聚集索引在几十毫秒内获得结果。
【问题讨论】:
你想要多少列?全部?仅数据日期? 所有列,按[DataDate]排序。 【参考方案1】:TOP
SELECT TOP(10) [DataDate] FROM YourTable ORDER BY [DataDate] DESC
【讨论】:
正确,因为最好使用索引 @Gravitas:时间戳是相反的:答案是“16 分钟前”与“15 分钟前”。这更正确,因为它选择一列:SELECT * 将使用稍微不同的计划 @gbn:这里的要求是获取最后 10 行,而不是最后 10 个DataDate
值...这意味着我变得更晚但答案正确;)
@Akram Shahda。好的,将其标记为答案。 SO上有很多非常诚实和公平的人,我印象深刻。【参考方案2】:
TOP (Transact-SQL) 指定从查询结果中只返回第一组行。行集可以是行数或百分比。 TOP
表达式可用于 SELECT
、INSERT
、UPDATE
、MERGE
和 DELETE
语句中。
SELECT TOP(10) *
FROM MyTable
ORDER BY DataDate DESC
【讨论】:
谢谢 - 尽管表有 3 亿行(查询计划使用 [DataDate] 上的聚簇索引),但它工作得很好。【参考方案3】:使用 ORDER BY 进行反向排序并使用 TOP。
【讨论】:
以上是关于TSQL 从表中选择最后 10 行?的主要内容,如果未能解决你的问题,请参考以下文章
从表中随机选择行 - Python Pandas 读取 SQL