I am beginning to see performance issues with some of the ListViews employed by my client. When there are a lot of records, the list views are taking a while to generate. I believe the performance hits are a result of:
1. Using select * for queries within ListView.ascx.cs
2. Returning large recordsets and Filling a DataTable with the result
3. Sorting large recordsets within codebehind.
I created a workaround for item 1 and I do see an improvement in performance. We do encourage the users to enter search criteria and we do set some default search criteria to limit the size of the result sets. That being said, I still think server side paging and sorting would be desirable. Are there any plans for this?
BTW, still working with 1.2 codebase. Will be syncing with next release from Splendid.
Thanks in advance.
How many records are in your table?
There are various techniques for paginating the code. The current approach results in very simple and straight-forward code, which is what we like. We also like that the current approach is database cross-platform.
One technique that we are considering is to replace the * with the minimum set of fields as determined by the dynamic layout logic. This can be tricky as we need to ensure that all field parts are properly included. We would still have a problem when the table has 1,000,000 records, but at least it is a start.
The difficult problem we face is whether to sacrifice performance for everyone in order to satisfy the few that would have large tables, or to keep the system fast for the average customer and expect the cutting-edge to fend for themselves. We figure that if you have 1,000,000 records, then you probably can afford a super-powerful database server and make-up for the deficiencies in the code.