Performance impact of referencing many tables in an app with queries

Hi, I was just wondering if there is potentially any unintended performance impact from referencing many different tables in an app.

Let’s say our app would try to fetch data from 8 different tables all containing a large amount of data. The queries would only be relevant for specific steps in the app.

As I currently understand table records are ALWAYS fetched at all times when any of the defined input criteria change. Correct?

There is currently no way to explicitly trigger the data fetching on-demand.

Doesn’t this create a lot of unnecessary overhead? I mean, if I only need the data at a specific step and the required input parameters will only get populated in due time when reaching this step in the app - theoretically this should fires many rather useless queries nobody is asking for…

Am I missing something? Is the Tulip platform silently monitoring if a query is actually used in a step or not and only run/fetch data if that is indeed the case?

I tought about this problem as well, because our client is facing some performance issues. I think if you could filter queryies multiple times it would solve a lot of performance problems. For example your app only loads in this month data and it is filtered down in each table one more step. This way you don’t need to load in the full data to filter in the tables.

Hi @koncvaker

Yes - filtering queries to fetch only the data you need is a good step. The less data is loaded the faster the app will be.

Let us know if you’d like to chat through performance issues your client is facing and possible solutions if this isn’t enough.

My problem is, that my client (and most others as well) works in two or three shifts.
Currently when I load data trough a query, I can’t filter the table more. I could make a lot of queries in the Records section, but it is hard to look trough currently. This could be improved as well with grouping of queries, and a search bar on top, but this should be another topic on its own.
If the manager want’s to see the three shifts separated, I need table level filtering to achieve this. I think if you could make two step filters (Fetch one week data into a query, and filter for each shift on the table) it would be more a lot more efficient way to load data into apps.

Namely — you have a query Q that you’d like to filter to shifts 1, 2, 3, which is not possible today after creating the query
and you could achieve this today by pre-creating three subqueries, Q1, Q2, Q3, that are appropriately filtered down in advance, but this would make your query list difficult to search through and navigate, and might also have to change as shifts change?

As a result you’re asking for “filterable” queries or dynamic queries that have an additional calculation on load. Is the additional calculation a filter on a particular column in a table, e.g. Shift == 1?

It could be Shift == 1 or specific day and specific shift, so the administrator can see the full weeks data. So my query would be filtered to a specific week and one more time on the tables for each day. I can imagine this being useful in other cases as well.

Creating query groupings and filtering queries would allow similar result to be achieved, because I could create all subqueries and organize them as well.

Should I create a product suggestion for this?

Yes we should convert this to a Product Suggestion. I will ask @Beth if we can just move without creating a new thread.

@koncvaker @OlgaStroilova Done!

1 Like

In the meantime, @koncvaker today you should be able to create queries that filter based to a parameter passed in by the App - Tulip Table Queries and Aggregations

Perhaps we can set up time or have you come to Office Hours to see if that helps you set up something more scalable? From there we can better identify what’s missing in the current query experience