[
https://issues.apache.org/jira/browse/WICKET-2618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12793972#action_12793972
]
Michael Mikhulya commented on WICKET-2618:
------------------------------------------
no changes in API required
Size will be calculated precisely from result of "iterator" when it is
possible. In case when it is not possible then decorator will forward to size()
of delegate object.
I believe changes shouldn't be complex, will check it on monday.
> Don't call IDataProvider.size method when IDataProvider.iterator(first,
> count) returned the number of elements less than "count"
> --------------------------------------------------------------------------------------------------------------------------------
>
> Key: WICKET-2618
> URL: https://issues.apache.org/jira/browse/WICKET-2618
> Project: Wicket
> Issue Type: Improvement
> Components: wicket
> Affects Versions: 1.4.4
> Reporter: Michael Mikhulya
>
> IDataProvider has two mehtods:
> Iterator<? extends T> iterator(int first, int count);
> int size()
> which in many implementations do access to database.
> Normally iterator do SQL query with LIMIT and OFFSET, and size do SQL COUNT
> query.
> SQL COUNT is O(N) for most transactional databases (e.g. for postgresql) and
> so it is rather heavy.
> In some cases it is possible to avoid call to IDataProvider.size method.
> For example when "iterator" returned the number of elements less than
> acquired "count".
> This case appears in 90% in my application (whenever search is used normally
> number of found elements is less than number of elements on page).
> Also pgFouine shows me these queries as the most slow one. So I suggest to
> implement this optimization.
> First I though that appropriate place to implement it is AbstractPageableView
> class, but unfortunatelly not all IPageable classes extends this abstract
> class (for example DataTable doesn't do so).
> So I suggest to implement Decorator of IDataProvider and reuse it in
> DataViewBase, DataTable, ...
> If nobody see any problems with this suggestion I would like to implement it
> on my own.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.