Which one of the two would perform better(I was recently accused of not being careful with my code because I used the later in Oracle):
Where (not) exists(Select 1 From Tab2 Where Tab1.id = Tab2.id)
Where (not) exists(Select Field1 From Tab2 Where Tab1.id = Tab2.id)
Yes, they are the same.
exists checks if there is at least one row in the sub query. If so, it evaluates to
true. The columns in the sub query don't matter in any way.
According to MSDN,
Specifies a subquery to test for the existence of rows.
An EXISTS condition tests for existence of rows in a subquery.
Maybe the MySQL documentation is even more explaining:
Traditionally, an EXISTS subquery starts with SELECT *, but it could begin with SELECT 5 or SELECT column1 or anything at all. MySQL ignores the SELECT list in such a subquery, so it makes no difference.