I don't understand how this works. Is data read from ETS somehow shared more efficiently than data shared via a regular message? (which iirc is always copied)
It's still copied but if you are using an ets table you're likely only copying a small subset of the data per query instead of schlepping the whole index every time.