I found a bottleneck with SQL and OpenCypher engines: when a query is executed, and only a few properties are requested (projections), the whole record is loaded and pushed up on the chain for evaluation.
We should push down the required field for evaluation first. Example: select a, b from X where a > 10 should push down the property a when the record is loaded, so only that proeperty is deserialized, and in case it matches, property b is deserialized together with A go into a Resultset that is pushed up.
This remove double deserialization, moving the whole record in RAM even when only a few properties are needed.