AFAIK, provided bar is UNIQUE in table2 (e.g. is a PRIMARY KEY) the two queries will give the same result:
SELECT foo, id FROM table1 WHERE id IN (SELECT id FROM table2);
SELECT foo, id FROM table1 INNER JOIN table2 USING (id);
Given table1 has about 100k rows, and table2 about 100 rows, which one should be faster, less resource intensive, use less RAM, disk access, etc? Are there any other even better ways to acomlish the same query?