There's really no way to answer this question. You're thinking about it wrong. A SQL query is not an instruction to the database about how to retrieve the result set you want, instead, it's a description of the data you want. How to get it is up to the database.
Oracle will rewrite your query into an execution plan. It will search for what it thinks is the most efficient plan based on your tables, indexes, constraints, the statistics it gathers, and even guesses it makes based on the data as it goes. In fact, it's very possible you can write this query with a join and with a subquery and it leads to the exact same execution plan and the same performance.
My suggestion is to write the query so that it is easy to understand what is going on. Only if the performance is actually poor should you worry about what it's doing. Oracle is pretty smart and may well find a route to your data that is better than you thought it would be.
What you have is fine and probably the query I would write myself to start with. You have not only a subquery but a scalar subquery, which had darn well better return exactly one or zero rows. So, if your fieldXValue
is not unique in the table, you will get an exception.
Scalar subqueries are generally very good to use. They are cached, so the query will probably only be run once, even if there are a million rows in your result set. I would recommend this article (along with everything else Tom Kyte has ever written): On Caching and Evangelizing SQL