在DB2上分析大量表

时间:2010-03-21 11:23:50

标签: sql db2 paging

我们认为,在没有约束的情况下,将返回9000万行以及需要显示该视图的分页数据集的报告应用程序。

我们正在使用nhibernate,最近注意到它的分页机制如下所示:

select * from (select rownumber() over() as rownum, 
    this_.COL1 as COL1_20_0_, 
    this_.COL2 as COL2_20_0_ 
    FROM SomeSchema.SomeView this_ 
    WHERE this_.COL1  = 'SomeValue') as tempresult 
where rownum between 10 and 20

查询使数据库服务器瘫痪。我认为发生的事情是嵌套查询在选择子集(行10-20)之前为where子句满足的每一行分配一个行号。由于嵌套查询将返回大量行,因此该机制效率不高。我已经看到很多在其他SQL平台上有效地做这个的技巧和窍门,但我很难找到一个DB2解决方案。实际上an article on IBM's own site推荐了nhibernate采用的方法。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,据我所知,这是唯一的方法。但是我认为首先需要确定在查询组件上花费的时间 - 使用visual explain或快照/事件监视工具。