我对甲骨文并不像我想的那样熟悉.我有大约25万条记录,我想每页显示100条.目前,我有一个存储过程,它使用数据适配器、数据集和数据适配器将25万条记录全部检索到数据集.在存储过程的结果上填充(数据集)方法.如果我将"页码"和"每页记录数"作为整数值,我可以将其作为参数传递,那么返回该特定部分的最佳方法是什么.比方说,如果我通过10作为页码,120作为页数,从select语句中,它会给出1880到1200,或者类似的东西,我脑子里的数学可能会出错.

我是在做这件事.NET与C#的结合,认为这并不重要,如果我能在sql端正确使用它,那么我应该很酷.

更新:我能够使用布莱恩的建议,而且效果很好.我想进行一些优化,但是页面将在4到5秒内出现,而不是一分钟,我的分页控制能够很好地与我的新存储过程集成.

推荐答案

像这样的东西应该有用:From Frans Bouma's Blog

SELECT * FROM
(
    SELECT a.*, rownum r__
    FROM
    (
        SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
        ORDER BY OrderDate DESC, ShippingDate DESC
    ) a
    WHERE rownum < ((pageNumber * pageSize) + 1 )
)
WHERE r__ >= (((pageNumber-1) * pageSize) + 1)

Sql相关问答推荐

查询多个表并返回合并在联合列上的所有表中的所有行

用于匹配红旗和绿旗的SQL查询

Stack Exchange站点上的最短帖子(按正文长度计算,用户名为原始发帖(SEDE))

如何使用ROW_NUM() Select 一个没有第二条记录的实例?

如何根据同一表中某一列中的值重新排列行(仅输出它们)(重新排序)?

PostgreSQL基于2个COLS的任意组合 Select 唯一行

如何在PostgreSQL中的一列中添加两个文本?

检索上一个星期四和上一个星期三

如何用QuestDB生成蜡烛图?

Postgres jsonpath运算符的变量替换,如_regex?

SQL查询正在工作,但返回空结果

Select 组中的第一行,但在并发环境中

使用 XML 作为 SQL 表

JSON对象查询SQL服务器

Postgres数据库维护:基于GROUP BY删除旧记录

IN子句使用的表值用户定义函数参数

PostgreSQL如何将Unix纪元时间戳转换为日期时间并进行拼接

SQL - 只需要 GROUP BY SELECT 的一列

在 MySql 数据库中的两个日期之间搜索

使用 JSON_BUILD_OBJ 从 Postgres 返回 JSON