Exists / not exists: 'select 1' vs 'select field'
Welche der beiden besser abschneiden würde (ich wurde kürzlich beschuldigt, nicht vorsichtig mit meinem Code umzugehen, weil ich den späteren in Oracle verwendet habe):
Select *
from Tab1
Where (not) exists(Select 1 From Tab2 Where Tab1.id = Tab2.id)
Select *
from Tab1
Where (not) exists(Select Field1 From Tab2 Where Tab1.id = Tab2.id)
Oder sind beide gleich?
Bitte antworten Sie sowohl aus Sicht von SQL Server als auch aus Sicht von Oracle.
Ich habe gegoogelt (meistens von SQL-Server-Seite) und festgestellt, dass es immer noch eine Menge Debatten darüber gibt, obwohl meine derzeitige Meinung / Annahme der Optimierer in beiden RDMBS ausgereift genug ist, um zu verstehen, dass alles, was von der Unterabfrage benötigt wird ist ein Boolescher Wert.