Zdravo Matjaž!
you are right in principle. Though there are hundreds of similar cases since DECADES!
ok, the cleaner solution brings us back to my previous proposal.
add a calculated property to your serial class ##class(Packing.Needs.Attributes) like this

Property List As %List [ CalculatedSqlComputed,
   SqlComputeCode 
= { set {*}= $LB({attr1},{attr2},{attr3},{attr4} ) }, SqlComputed ];

attr1,attr2,attr3,attr4 have to be the SQLnames of these properties !!!

WARNING#1: you have to maintain this list manually at every change of the attributes!

WARNING#2:: this calculation happens at every access to the object. 
The additional parameter     SqlComputeOnChange = (attr1,attr2,attr3,attr4
may reduce this. though I've never tried in practice

IRIS includes a bunch of "legacy" routines".
Typically %R*, %G* that you can load by "legacy" commands in a "legacy" session or terminal
(not webterminal or simliar commandline simulatiors)
They are hidden in some way, It is not specific to VSC but the same with Studio.
Though ZL %RI ZS %zRI should create a routine that you can work on. Z*,z*%Z*,%z* is writable Use code

20/30 tables and 300 columns is quite a heavy query / view.
VIEW is only a stored SELECT. The same considerations apply. 
#1)
you should have an index for each column that appears in a JOIN ON..   on WHERE...
and that's hopefully just 1 index by table
#2) for each table the required columns should go as Data into the index
You are perfect if the query analyzer only shows access to indices.

My proposal only covered views of a single table with indices

Materializing a multi-table view as you describe it would require a hidden table with all JOINs
and no filtering WHERE clause. And you would require extra code to keep it up to date.
This is a job that the query generator does in an excellent way and with all tricks available.

I wouldn't say it's impossible. And the final query is definitely faster. 
But it may take weeks or months to get it running. Not to talk about maintenance.
Analytics/DeepSee acts in a similar way. And I can prove: it wasn't done in an afternoon session.