Hi, Sol!
There are several strategies you can go for here, depending on what fits your case the best.
The first thing I would consider is applying a filter on the database connected object class in your app. If no filter really fits your case, and you would like the user to be able to access all the data, I would consider using the skip and limit features on your database connected data source. You can create two app variables of type integer, and databind them to the skip and limit properties. The variable used for skip should be default set to 0, and limit set to e.g. 100.
Then, you could disable the pagination feature on your table, and create custom buttons for this in your UI. On the button for “next page”, you can connect an action that increases the “skip” variable by 100. You do this by “updating” it to itself, and value process it to add 100. You can use the samme pattern for the “previous” button, but value process it to decrease by 100. Also remember to disable the “previous” button when the “skip” value is 0.
By doing this, you ensure only 100 records of that object class is loaded into your app at all times. If you want the user to be able to load more data, you can allow it to edit the “limit” app variable in the UI. It would be good to set a max limit to the user input on this variable.
Link to docs on skip and limit
If you want to do this runtime, you can use the “skip first” and “limit result” properties on the “read objects” action node, and connect your table to this runtime data source. When loading the next page on your table in this case, you can use the same method as described above and increase your “skip” app variable by e.g. 100, and then use read action node with the “skip first” property connected to your “skip” app variable.
You can still use the existing table functionality for search, filtering and sorting if you keep using the built-in table component for your datasource, but the result will be based on the records you have in the table at the moment, not all data in the database.
If you want to build search functionality that searches all records in the database, I would recommend using the “advannced search” action node. To do this, you have to enable advanced search on the properties you want to search on in the object class in the global data model. The action node then reads the matching records into a runtime data source.
Docs on advanced search
These are tips on minimizing data read into your app, but we also have an article on general performance optimization in our documentation
I hope this helps in your work with large amounts of data, let me know if anything is unclear or you want some more tips for a specific strategy 