需要关于设计表格分页的建议

时间:2013-02-21 05:23:25

标签: java javascript performance jquery

问题陈述:在Oracle表格中,我有3000000条记录。用户希望在浏览器中将此表视为具有分页的表(jquery数据表)(每页100条记录)。当我设计它时,大约有30000页。当用户点击单页时,我查询表,订购显示它将返回那么多行。这里的问题是加载每一页需要大约20秒的时间。

任何人都可以建议我“如何处理这种情况?那么用户不会觉得从他身边缓慢。在这些记录的服务器端缓存是不是一个好选择?”

查询类似于:

SELECT /*+ ALL_ROWS */ * FROM 
(SELECT ROWNUM SNO , A.* FROM 
( SELECT /*+ PARALLEL(ABCTABLE 4)*/ COUNT(*) OVER ( ) CNT, 
            columnA, columnb,columnc
             FROM ABCTABLE )
       order by columnA, columnb,columnc ) a )
       where sno between ? and ?;

?和? : - 页面范围1到30/30到60 /.....

3 个答案:

答案 0 :(得分:1)

我仍然怀疑你的GUI用户会看到所有3000000记录。他肯定对大约1000条记录(10页)的最新行(过滤器)感兴趣,因此您可以更好地将前1000条记录传递给客户端,并让客户端在每页中显示100条记录,直到10页。之后,您可以ping服务器以获取接下来的1000条记录。

如果延迟是在ORACLE获取中,请考虑对表进行索引以减少查询时间。 http://www.codeproject.com/Articles/39006/Overview-of-SQL-Server-2005-2008-Table-Indexing-Pa

同时仔细检查explain plan

答案 1 :(得分:1)

要提高性能,首先需要找到瓶颈。这可能是一些事情:

  1. 由于查询计划错误/缺少索引等,查询返回缓慢。
  2. 由于网络速度慢,数据会缓慢返回
  3. 数据在您的应用程序中缓慢呈现
  4. 没有人想浏览300万条记录。人们正在寻找一些东西。如果您添加一些合理的搜索/过滤条件和索引,您将获得更有用的应用程序。

答案 2 :(得分:1)

大多数屏幕限制只显示30条记录。

想法是向用户显示30条记录,因为用户无法在洞屏幕中看到30000条记录,他必须向下滚动才能看到其余的记录。

当他向下滚动时,尝试获取下一个30条记录,直到每页达到30000条记录。

您可以在Sql查询中使用limit来限制记录数而不是获取所有记录,这会减少页面加载时间。

这样的基本限制为1到30000,30001到60000,每页等等。

然后在每个滚动上的SQL限制为1到30

sql_limit = base_limit + 30

如果用户向下滚动到第30条记录的末尾,则获取新的30条记录

sql_limit + 30

继续此过程,直到达到30000页面限制

直到sql_limit> = page_limit

如果sql_limit超过page_limit,则跳转到新页面并再次对每个页面执行相同的处理。