Unless I'm missing something, this ought to be pretty straightforward. Pseudo-code, but you can solve this a few ways...
SELECT
*
FROM
Table1
JOIN TABLE2 ON Table1.orderlist_email = TABLE2.email
Table1.flag1 = 0
AND TABLE2.flag2 = 0
Alternatively, you can add the WHERE
conditions to the JOIN
like so:
SELECT
*
FROM
Table1
JOIN TABLE2 ON Table1.orderlist_email = TABLE2.email
AND Table1.flag1 = 0
AND TABLE2.flag2 = 0
I think your concern is whether or not this means the engine will still perform a full scan of both tables, rather than sticking with a "pre-filtered" set it will attempt to join. Modern engines should be clever enough to figure this stuff out, but based on the complexity of your query, your mileage might vary.