【发布时间】:2010-11-27 11:00:53
【问题描述】:
我有一个包含数百万条记录的 oracle 数据库。我正在尝试编写一个 SQL 查询,该查询根据特定条件从数据库中返回前“N”条排序记录(比如 100 条记录)。
SELECT *
FROM myTable
Where SIZE > 2000
ORDER BY NAME DESC
然后以编程方式选择前 N 条记录。
这种方法的问题是:
- 查询结果成50万 记录和“按名称排序”原因 所有要在 NAME 上按降序排序的记录。这种排序需要很多时间。 (将近 30-40 秒。如果我省略 ORDER BY,则只需 1 秒)。
- 在我感兴趣的排序之后 只有前 N (100) 条记录。所以完整记录的排序是没有用的。
我的问题是:
- 是否可以在 查询自己? (这样排序只适用于 N 条记录,查询变得更快)。
- 在 SQL 中改进查询排序的任何更好的方法 只有 N 个元素并快速返回 时间。
【问题讨论】:
标签: sql oracle sorting sql-order-by