Which one has the best performance?

Which one has the best performance?


Hi there,

A few days ago i was using the property of the container to hide some information from users of certain role, and my friend asked me why i was using this if exists the if widget. Well, i think the performance of container property is better, but i not so sure.

And another doubt, talking about performance, i know that SQL Advanced isn't automatically optimized for Outsystems, but this affect his performance?

thanks in advance


Hi Henrique,

Best Performance is something like server uses less resources / give faster response, and you can decide which method fits for your needs.

About your question,

1) Yes use if widget is the best way to hide some parts of web page, if you use container hide it still available in client side.

2) About queries, if you use Advance Query for update/delete 1000's of records with one single statement is more performance than using retrieve records from Aggregates and loop through update/delete entity action.

  2.1) And if have good knowledge in sql queries for optimize query, or if its complicated query to build then you can use Advance Query, otherwise use Aggregates because Outsystems do optimize query for you.

And more best practices you can follow here,

1) https://success.outsystems.com/Documentation/Best_Practices/OutSystems_Platform_Best_Practices

2) https://success.outsystems.com/Documentation/Best_Practices

3) https://www.outsystems.com/home/downloadsdetail/24/201/



If widget better in terms of security....Attributes visible and enabled you can hacks it.

But if widget is processed on server hence will not renders if condition not met.


Hi Henrique,

1) Yes, using IF is much more performance oriented instead of hiding/showing container.
Because when you hide container, it will still be there in your client side code but its display property is set to none.
If you use IF statement, then whatever comes under FALSE part will not be rendered at all.
So it will reduce load of browser and will obviously increase your performance.

2) Talking about Advanced Queries and Aggregates, as Balu said, you can achieve performance in both the ways its upto your logic.
- For example if you want to update 1000s of records or want to merge/delete/insert more data you can do it in both the ways. But if you have more knowledge on SQL and you know how to use MERGE statements you can just do it easily with one go. You don't need to iterate through the loop to update the 1000s of records.
So obviously in such case you can achieve performance like this if the query is more complex. Else just use aggregates and OutSystems will take care of the performance.

Also talking about the performance, if you have huge database you can also tune indexes to achieve your desired output as per your query type(i.e. list or insert/update/delete).

Palak Patel