从数据库中选择x和y之间的行

时间:2009-09-30 15:17:06

标签: database sybase

我有一个返回30行的查询。我正在编写代码,通过AJAX调用将这30行分页为每页5条记录。

  1. 有没有理由在表示层上返回这5条记录?在速度方面是否会有任何好处,或者它是否只是在引擎盖下的所有行?

  2. 如果是这样,我如何在Sybase中实际执行此操作?我知道Oracle有Rownum和MS Sql有类似的东西,但我似乎无法在Sybase中找到类似的功能。

5 个答案:

答案 0 :(得分:3)

除非你的记录长度很大,否则5到30行之间的差异对于用户来说应该是完全不可察觉的。事实上,多个数据库调用对性能的影响远大于帮助,这是一个巨大的潜力。只需将所有30行返回到您的中间层或您的演示文稿,无论更有意义。

答案 1 :(得分:0)

答案 2 :(得分:0)

我从未使用过Sybase,但这里有一个解释如何做类似事情的链接:

http://www.dbforums.com/sybase/1616373-sybases-rownum-function.html

由于解决方案涉及临时表,您也可以将其用于分页。在初始查询中,将30行放入临时表中,并为页码添加一列(前五行是第1页,下一页是第5页,依此类推)。在后续页面请求中,您将按页码查询临时表。

不知道如何清理临时表。也许当用户的会话超时?

对于30条记录,它甚至可能都不值得用分页来打扰。

答案 3 :(得分:0)

我认为在sybase中你可以使用

select top 5 * from table 
where order-by-field > (last record of previous calls order-by-field)  
order by order-by-field

确保每次都使用相同的订单。

至于好处,我想这取决于我们谈论的行数和表格的大小等。

答案 4 :(得分:0)

我完全赞同jmgant,但是,如果你想要这样做,过程就是这样的:

  1. 选择前10个项目并存储在X
  2. 选择前5项并存储在Y
  3. X-Y
  4. 整个过程可以在1个SQL语句中进行。