我目前正在开发OpenEdge中的REST API(使用新的面向对象的WebSpeed处理程序),供Kendo网格小部件使用。
我真正努力的一个领域是实现分页 - Kendo网格要求API为其提供总数记录,以确定有多少页面。 The only recommended way I've found of doing it要进行PRESELECT
查询,然后使用NUM-RESULTS
,就像这样:
CREATE QUERY hQuery.
hQuery:SET-BUFFERS(BUFFER sales_order:HANDLE).
hQuery:QUERY-PREPARE("PRESELECT EACH sales_order WHERE co_no = 1").
hQuery:QUERY-OPEN().
oJson:Add("total", hQuery:NUM-RESULTS).
这可以预见,这是非常慢的 - 对服务器的请求从每页72毫秒上升到500毫秒,使得网格感觉非常缓慢。这也是一个非常低的页面大小!
这里显而易见的解决方案是:
所以,我的问题是,是否有更快的方法来获取查询的总记录数?
答案 0 :(得分:1)
不幸的是,这仍然是OE中的一个问题。
提到了缓存,但只有在未应用过滤器时才会有效,因为记录总数取决于过滤条件。
唯一可以提高性能的方法是在PRESELECT中包含FIELDS选项
hQuery:QUERY-PREPARE("PRESELECT EACH sales_order FIELDS(table_field_here) WHERE co_no = 1").
到目前为止,这是你能做的最好的事情,至少是本文的建议:4GL. WHICH IS THE FASTEST WAY TO COUNT RECORDS IN A TABLE?