(Caveat: I am not a database "guru", so take the following with a grain of salt.)
Since the intersection of the AB and BC tables would seem to be the driving factor behind the row selections, I would do that first, then get the matching rows from the A, B, and C tables:
SELECT A.col1, A.col2, B.col1, B.col2, C.col1, . . . C.colN
FROM AB
INNER JOIN BC ON AB.B_ID = BC.B_ID
INNER JOIN A ON A.ID = AB.A_ID
INNER JOIN B ON B.ID = AB.B_ID
INNER JOIN C ON C.ID = BC.C_ID
ORDER BY A.ID,B.ID,C.ID
Assuming that the ID columns of A, B, and C are the primary keys (and thus already indexed) you'd want to make sure that the A_ID, B_ID, and C_ID columns in the two relation tables are all indexed.