From bob++'s link, these options appear to be Cognos-specific. IME, Cognos can make some pretty inefficient calls to the database, and I guess these options were added to provide a little help.
Also in my experience, the optimizer in most RDBMS does a better job than I can on inner joins, and most slowness issues in those queries could be fixed with an index.
So, I’m having trouble coming up with an non-completely complex example where this SWAP_ORDER flag would make a real difference.
I think, though, since the SEMIJOIN flag is also set, that there might be something going on. It looks like the SEMIJOIN will pre-fetch the values from the right side of the join and, if the list is small enough, convert the join to in IN clause. So,
INNER {OPTION SWAP_ORDER=“true”, SEMIJOIN="true} JOIN on a.id=b.id
would become, more or less
WHERE b.id IN (1,2,3,5,10,30)
This could probably provide some improvement in conditions where the number of rows in a is much smaller than the number of rows in b.
It does feel, though, like something where someone went to a site like stackoverflow and said “my query is slow-HALP!”, and found out about this from someone who used it once in a esoteric edge case, and it sort of worked, so now they try it whenever query perfomance needs a boost.
I think if we came across something like this on my team during code review, we’d try to re-write the query to make it a bit more understandable what is going on.