How a range query works on a simple B+tree

Given a B+tree indexing scheme, wondering how a database actually goes and finds records matching a range query such as the following:

CREATE TABLE foo (
x int,
y int
)

SELECT * FROM foo
WHERE x > 10 AND x < 100
AND y > 20 AND y < 200


From my understanding this would require 2 b+trees, one for each property ($x$ and $y$). Wondering if one could describe how it would go about about querying the different indexes to satisfy this query. I am having difficulty understanding how the B+tree works in practice.

One natural approach is that the system might compute in advance an index over the x-values (i.e., a B+ tree that is keyed by the x values) and a second index over the y values (i.e., a B+ tree that is keyed by the y values). Given those indices, you can now implement the search query by doing a range query on the first B+ tree to find all values where x > 10 AND x < 100, then iterate through them and keep the ones that also satisfy y > 20 AND y < 200.