In Peoplecode, it is common to see this construct:
1 | Local Rowset &rs = CreateRowset(Record.RECNAME); |
Often, this construct is used within a loop. But this is not a “free” statement – it goes to the database:
1 | SELECT {column_list} FROM {tab_name} WHERE 1=2 |
Which, on SQL server would get wrapped in a SET FMTONLY ON / SET FMTONLY OFF statement pair in order to get the column META-DATA (describe output).
But if you use the above construct inside a loop, then there will be “n” executions of the above SQL – so “n” database round trips too. This is not free and will impact your performance.
Better to define the rowset at the component level and re-use inside the loop.
PS: The same applies to CreateRecord(Record.RECNAME). Think about where you place these statements in your code – especially in App Engine code where you are likely to be looping through rows..