Ich bin mit SQL Server 2008 R2Unterschied zwischen verschiedenen Schreibweisen IF Existiert?
Ich will einfach testen, wenn etwas in einer Tabelle
existiertIF EXISTS (SELECT * FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT ca FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT 1 FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT (1) FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT TOP 1 1 FROM ta WHERE ca = 'abc') PRINT 'YES'
Haben sie irgendwelche Unterschiede in Folge/Nebenwirkung/Leistung (egal wie klein)?
Danke
Vielen Dank! Sie implizieren also, dass diese Abfragen einige Unterschiede haben, wenn sie nicht mit IF EXISTS gepaart sind? – user1589188
@ user1589188: sicher - wenn Sie eine "Stand-alone" haben 'SELECT *' - das ist schlecht, weil Sie (a) alle Spalten (benötigen Sie wirklich *** alle *** Spalten ???), (b) Sie geben nicht an, welche Spalten Sie haben möchten (könnte eine böse Überraschung bekommen, wenn eine BLOB-Spalte wie ein Bild an einem bestimmten Punkt hinzugefügt wird) und so weiter. Wenn ich nicht in einem 'IF EXISTS (..) 'bin, befürworte ich ** ** ** ** niemals ** zu verwenden (definitiv nicht in deinem Produktionscode) - verwende immer ** explizite ** Spalten und schnappe dir so wenige Spalten wie du wirklich brauchst. –