Есть ли разница в производительности следующих трех операторов SQL?
SELECT * FROM tableA WHERE EXISTS (SELECT * FROM tableB WHERE tableA.x = tableB.y)
SELECT * FROM tableA WHERE EXISTS (SELECT y FROM tableB WHERE tableA.x = tableB.y)
SELECT * FROM tableA WHERE EXISTS (SELECT 1 FROM tableB WHERE tableA.x = tableB.y)
Все они должны работать и возвращать один и тот же набор результатов. Но имеет ли значение, если внутренний SELECT выбирает все поля таблицыB, одно поле или просто константу?
Есть ли какая-нибудь лучшая практика, когда все утверждения ведут себя одинаково?