30-40 second is too long. Where is the time taken? Did you try debugging it? May be access to database is taking time.
I have implemented a simple pagination implementing datamodel. Database contains around 40000 entries and it works relatively faster.
May be you need to do some profiling.
Data table columns are around 60 columns ( again this is configurable and some columns have render condition for dynamic display).
Do you have this also? 10 is my max,now way I'll ever go to 60!?!. Most likely the delay is on multiple levels...
Table uses My Data Model that extends ScrollableTableDataModel
you sure that you implemented data model properyl? Use debug to check if the needed rows fetched only but not whole table data.