I have 2 very large tables, over 5K rows and I need to have an inline list in one of the other.
In terms of performance is it better to create a one to many relation and show the inline list this way or to show the table and filter it?
I’m not 100% sure, but I don’t think it matters.
Either way, both tables will be downloaded in their entirety to each users device (unless you’re using row owners).
Do you have to show the whole table in a single inline list?
If not, it may be a worth considering building one or more relations with pre-filtered subsets of the list, then there would be less data for the device to render in a single list. But again, I’m not sure that it makes much difference.
yes my relation is based on the signed in user. In this case it will only download the rows that are related, correct?
However I cant use row owners because I have other user roles that need to access all the data.
No. Relations are computed columns and all computed columns are built on the users device. So in order to build the relation, the device needs to download all data. This will always be the case unless you are using row owners.
Is there a way to use row owners and still allow to other users see rows that don’t belong to them?
No, but there are other options.
For example, you can have multiple row owner columns. This option can be useful when you have a small number of “priviledged” users. Just create a row owner column for each and populate with their email address. If the table is linked to a Google Sheet, arrayformulas can be used. Otherwise you’d need to populate the columns as each new row is added.
Another option (only if you’re using Google Sheets) is to make a read only copy of the table using query or arrayformulas, and just bring in the columns that need to be made public. This techique is quite commonly used to create a “Public Users” table where the primary User Profiles table is using row owners. It does of course double your row count for that table, so comes at a cost.
If you only want to show for example a Top 10 List associated to sales, performance, profit, etc, I’d create that Top 10 List in my GS and later I will load it to my app to safe rows and improve performance.
Moreover if that data doesn’t change too fast and its updating isn’t a priority to be shown on your app (less than 5-10min).
But reading better your request it won’t work because you need that data based on the signed in user.
Can I user RowID’s of Users as row owners instead of Emails?