下面三个 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 选择 tableB 的所有字段、一个字段或只是一个常量,这有关系吗?
当所有语句表现相同时,是否有任何最佳实践?