Vor Jahren war es üblich zu schreiben
where exists (Select * from some_table where some_condition)
Letztes Jahr habe ich festgestellt, dass viele T-SQL-Skripte auf die Nummer 1 anstelle des Sterns umgestellt haben
where exists (Select 1 from some_table where some_condition)
Nur auf SO habe ich dieses Oracle-Beispiel gesehen
WHERE EXISTS (SELECT NULL FROM ...
Ist dies ein allgemeines Muster bei Oracle? Und was sind die Leistungsargumente, um so etwas zu verwenden?
oracle
sql-server
style
bernd_k
quelle
quelle
Antworten:
Kurze Antwort: Ich würde nicht hoffen!
Sogar die
SELECT 1
Redewendung hat möglicherweise ihre Nützlichkeit überlebt, da die Datenbank-Engines so weit fortgeschritten sind, dass sie erkennen, dass Sie die Zeilen nicht wirklich wollen, sondern nur wissen möchten, ob die Zeilen existieren. Ich habe mir Ausführungspläne in SQL 2005 angesehen und im Allgemeinen gesehen, dass diese als Verknüpfungen neu geschrieben wurden, selbst wenn sieSELECT *
verwendet werden.quelle
In Oracle spielt die Leistung keine Rolle. Sie können dort sogar 1/0 setzen, und die Anweisung gibt keinen Fehler zum Teilen durch Null zurück, da der Ausdruck nicht ausgewertet wird.
quelle