ich eine Abfrage wie diese:Warum ist eine Sub-Abfrage mit In (Auswahl) schneller als in ('xx', 'xx' ..)
Select PATH
from FOLDER
where ...
Diese Abfrage eine Liste des Pfades zurückzukehren. (z. B. 600 Zeichen).
Als ich diese Liste der Pfad verwenden und tun eine weitere Anforderung später mit
Select *
From FOLDER
WHERE FOLDER.PATH IN ('path1','path2' [...])
könnte es mehr als 30 Sekunden dauern.
Wenn ich diese Abfrage tun:
Select *
From FOLDER
WHERE
FOLDER.PATH IN (Select PATH
from FOLDER
where
...)
Es dauert weniger als 1 Sekunde.
Ist SQL-Server die Abfrage durchführen und Join?
In diesem Fall, warum auf this post empfehlen sie, die Abfrage mit einem JOIN zu ändern?
Gail Shaw hat einen ausgezeichneten Artikel zu diesem Thema. https://www.sqlinthewild.co.za/index.php/2010/01/12/in-vs-inner-join/ –