[ https://issues.apache.org/jira/browse/WICKET-2618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12793969#action_12793969 ]
Juergen Donnerstag commented on WICKET-2618: -------------------------------------------- Since 1.4.x releases must remain backwards compatible, no changes to the API are permitted. It'll be considered for 1.5 than. Question on your application: I assume you are not using something like <first> <prev> 1 2 3 4 5 ... 10 <next> <last> in your app, since for that to work you'll obviously need the size. Please consider that with your changes since the implementation has to work many use cases. > 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.