We're talking about the new *local* version of 'order by formula' that executes on Remote.
On Nov 27, 2012, at 9:41 AM, Mehboob Alam <[email protected]> wrote: > As I recall, "query by formula" and "order by formula" were optimized in > v11 and onwards. Quoting from the Language Reference > > *4D Server:* Beginning with version 11 of 4D Server, these commands are run > on the server, which optimizes their execution. Keep in mind that when > variables are called directly in > queryFormula<http://doc.4d.com/4D-Language-Reference-13.2/Queries/QUERY-BY-FORMULA.301-1077481.en.html#>, > the query is calculated with the value of the variables on the client > machine. For example, the statement *QUERY BY > FORMULA*([mytable];[mytable]myfield=myvariable) > will be run on the server but with the contents of the myvariable variable > of the client machine. > > On the other hand, this principle is not applied for formulas using methods > that, themselves, call variables (the values of the variables are evaluated > on the server). In this context, it may be advisable to use the "Execute on > server" method attribute, which allows the method to be executed on the > server while passing parameters (variables) to it (see the Design Reference > manual). > > In previous versions of 4D Server, these commands were executed on client > machines. For compatibility's sake, this functioning is maintained for > databases converted to version 11. A compatibility preference and a > selector of the SET DATABASE > PARAMETER<http://doc.4d.com/4D-Language-Reference-13.2/4D-Environment/SET-DATABASE-PARAMETER.301-1077941.en.html> > command > can nevertheless be used to adopt the functioning of version 11 (execution > on the server) in converted databases > > > > The same applies to "order by formula" > > > *4D Server:* Beginning with version 11 of 4D Server, this command is > executed on the server, which optimizes its execution. Note that when > variables are called directly in the > expression<http://doc.4d.com/4D-Language-Reference-13.2/Queries/ORDER-BY-FORMULA.301-1077476.en.html#>, > the sort is calculated with the value of the variable on the client machine. > > On the other hand, this principle does not apply for formulas using methods > that, themselves, call variables (the values of the variables are evaluated > on the server). In this context, it may be advisable to use the "Execute on > server" method attribute that allows a method to be executed on the server > while passing parameters (variables) to it (see the Design Reference > manual). > > In previous versions of 4D Server, this command was executed on the client > machines. For compatibility's sake, this functioning is maintained in > databases converted to version 11. A compatibility preference and a > selector of the SET DATABASE > PARAMETER<http://doc.4d.com/4D-Language-Reference-13.2/4D-Environment/SET-DATABASE-PARAMETER.301-1077941.en.html>command > can nevertheless be used to adopt the functioning of version 11 (execution > on the server) in these databases. > > > > *your mileage may vary* - I hope this help? > > > > > On Tue, Nov 27, 2012 at 8:28 AM, Aparajita Fishman < > [email protected]> wrote: > >> 'order by formula' has to load every record in the selection no matter >> what the expressions are, because every expression expects the correct >> record to be current. >> >> You can't possibly expect me to do some kind of heuristics on the >> expressions and optimize accordingly, especially in this case where you are >> using a field of a table as the key for a collection. >> >> I specifically said on this list and in the documentation that there is a >> potential performance penalty on Remote. >> >> On Nov 27, 2012, at 4:45 AM, Peter Gutbrod <[email protected]> wrote: >> >>> Out of interest: >>> >>> What happens internally, if I do an "order by formula" on a collection, >>> which has an ID of the sort table as the key? >>> >>> Aka. >>> >>> order by formula(*; [contacts]; $collection{[contacts]ID}) >>> >>> Does is load each record of the current selection or does is just copy >>> [contacts]ID into an array and use that for the sort? >>> >>> Would make a big difference in performace if you run it on Remote. >>> >>> Peter >>> >>> >>> >>>> Hello, >>>> >>>> The latest and greatest version of Active4D, the ultimate 4D web >> development >>>> environment, is now available for download. Active4D v6.0r8 is a feature >>>> release: >>>> >>>> - ORDER BY FORMULA now has an option to be executed within Active4D¹s >> context, >>>> which allows access to Active4D¹s full execution environment within the >> order >>>> by expressions. >>>> >>> >>> >>> >>> _______________________________________________ >>> Active4D-dev mailing list >>> [email protected] >>> http://list.aparajitaworld.com/listinfo/active4d-dev >>> Archives: http://active4d-nabble.aparajitaworld.com/ >> >> Regards, >> >> Aparajita >> >> _______________________________________________ >> Active4D-dev mailing list >> [email protected] >> http://list.aparajitaworld.com/listinfo/active4d-dev >> Archives: http://active4d-nabble.aparajitaworld.com/ >> > > > > -- > > m|a > _______________________________________________ > Active4D-dev mailing list > [email protected] > http://list.aparajitaworld.com/listinfo/active4d-dev > Archives: http://active4d-nabble.aparajitaworld.com/ Regards, Aparajita _______________________________________________ Active4D-dev mailing list [email protected] http://list.aparajitaworld.com/listinfo/active4d-dev Archives: http://active4d-nabble.aparajitaworld.com/
