I would like to suggest an alternative approach to using expression fields.
I do realise that the best idea is to try and avoid using expression fields, but still they are often very useful and, but I see that they are handled pretty poorly, performance wise.
The simplest example is that I may have 2 tables in which I would like to display more than one field in one table that belongs to the other table.
Now the resulting query often is something like:
select t1.field1, t1.field2, (select t2.fieldX from table2 t2 where t2.key = t1.key), (select t2.fieldY from table2 t2 where t2.key = t1.key) from table1 t1
I would guess that the best way to go about this is to have a query that says something like:
select t1.field1, t1.field2, t2.fieldX, t2.fieldY from table1 t1 left join table2 t2 on t2.key = t1.key
Could it be possible to facilitate this by, for example, creating joins on tables much like you draw references for check integrity, look-up or show detail purposes? When a reference like this is drawn between two tables they will join and you can draw information out of them by using their aliases instead of writing a complete subquery for each column you would like to show.