I use datatables on another project, and have the same problem where once you get to around 1000 rows, things can get very slow.
Right now, the user with 1000 invoices gets 1000 rows of invoice data, even if they only want to display 15. I have about 500, and everything is fine, but I am starting to notice small delays as json loads.
It’s possible to return json in a way that datatables loads only as much as is needed to display and then makes additional calls for more data when needed. I think it’s part of datatables options. It’s a fix I’m working on on that other project. Might be tricky though because of the way SI stores json in the temporary data.json file. It also might impact the ability to search all invoices without an additional call to server.