Generally any equality is fine, but you'd usually do something like on mycustomfunction(a) = mycustomfuntion(b)
And if you do this, it will be incredibly slow because you cant use any indexes in this case.
And if you do this, it will be incredibly slow because you cant use any indexes in this case.
[0] https://www.postgresql.org/docs/current/indexes-expressional...
[1] https://dev.mysql.com/doc/refman/8.0/en/create-index.html#cr...
Often you can just think a bit harder about your set based logic and make an index that's reusable by other queries.
In other SQL's you can also make a materialized view, which may be able to persist some of these things, its just like keeping n+1 copies of your data to satisfy a different set of relations/projections.