2010-01-21 10 views
18

Was ist schneller?SQL Server: Wählen Sie in vs oder?

SELECT UserName 
FROM dbo.UserTable 
WHERE UserID in (1,3,4) 

SELECT UserName 
FROM dbo.UserTable 
WHERE UserID = 1 
     OR UserID = 3 
     OR UserID = 4 
+0

http://stackoverflow.com/questions/3074713/in-vs-or-in-the-sql-where-clause – rdo

Antwort

23

Durch SQL Server Optimierung von Abfragen diese mit der gleichen Geschwindigkeit laufen, da sie logisch äquivalent sind.

ich bevorzuge die IN-Syntax für die Kürze und Lesbarkeit.

+1

Eher dann Or/In gibt es irgendeine Möglichkeit, abzufragen? das wird schneller funktionieren? – Worgon

+1

@Worgon Wenn die Anzahl der Werte groß ist, können Sie die verschiedenen Werte in eine indizierte temporäre Tabelle einfügen und sich daran anschließen. –

7

Eigentlich ist es das gleiche.

Wenn Sie den geschätzten Ausführungsplan anzeigen, sehen Sie, dass dieselbe Aktion ausgeführt wird.

-1

Dies ist relevant, wenn es darum geht, SQL über Linq zu erzeugen. Es gibt einige Fälle, in denen der erstellte SQL-Code die Form von: field = 'xxx' OR field = 'yyy' hat.

+0

Können Sie das bitte klären? Ich habe keine Ahnung, was du sagst. – tbodt