首页 > 解决方案 > 任何可能的方式来避免按 desc 排序以选择前 500 条最新记录。由于排序会导致很多性能问题,

问题描述

我有一个表,有两列c1 和 c2都是整数。我必须按 desc 的顺序选择前 500 条最新记录。表有超过 5000 万条记录。

  1. c1是具有“按 asc 排序”的聚集索引。
  2. 无法删除为c1完成的聚集索引,因为它具有太多依赖项。
  3. 我需要按c2的降序对表格进行排序。
  4. 因此,当我编写一个没有“order by desc”的选择查询时,它应该按c2的降序排序。

任何可能的方法来实现这一点。

标签: sqlsql-serverindexingclustered-indexnon-clustered-index

解决方案


没有办法肯定地实现这一点,因为 SQL 表是无序的行集合。任何未提及 ORDER BY 子句的排序都是偶然的,可以任意更改。

作为参考,来自SELECT - ORDER BY Clause (Transact-SQL)

除非指定了 ORDER BY 子句,否则无法保证在结果集中返回行的顺序。


推荐阅读