AppSheet maintains a performance profile for every app. This is similar to the Audit History log, recording each sync, add, update, or delete recorded by the AppSheet backend. Along with each entry, there is detailed performance information captured during the execution of the operation.
Check the Performance Profile as follows:
Open your app in the editor.
Go to the Manage >> Monitor tab, click Performance Profile, then Fetch performance data.
Look for appropriate performance log records.
Click the Details icon to see the performance details of the action.
By default, the information is shown as a tree that can be expanded or collapsed. Look for:
Tables that take a long time to read: perhaps they have too much data?
Virtual column expressions that take a long time to read: perhaps they can be written more optimally?
Almost always, a long sync time is because of many tables and/or large tables. Here's how to understand sync time:
Let us say you have 10 tables in your app. AppSheet's server has to read all ten tables from the cloud backend. AppSheet will only read a few of them at a time in parallel. For example, accounts with self-service plans will only get 2 or 3 threads loading tables in parallel. Enterprise subscriptions will have 10 threads in parallel.
If a table is very large or takes a long time to load, then it slows down the overall sync time.
Often there are references between tables and therefore, there are automatically added REF_ROWS() virtual columns that compute the relationships between the tables. It may appear that one of these virtual column computations is taking a long time. However, this is rarely the case. The time assigned to this computation is typically because it has to fetch the table itself before computing the relationship. In other words, fetching tables is almost always the source of delay.
If you write your own virtual column expressions with inefficient SELECT() expressions, that could create inefficiency and delay.