Unterschiede zwischen Sql existiert und In Unterschied zwischen

Anonim

Sql existiert vs In

Problemlösung in TSQL ist durch verschiedene Methoden verfügbar und die gewünschten Ergebnisse können mit jedem von ihnen gesehen werden. Eine der Möglichkeiten, wie die Endergebnisse erreicht werden können, ist die Verwendung von IN- und EXISTS-Klauseln. Die Verwendung der Klauseln hilft bei der Filterung der Ergebnismenge in Bezug auf eine verfügbare Unterabfrage. Die Ausführung von IN und EXISTS unterscheidet sich geringfügig und es werden diese Unterschiede ausgewertet.

Es gibt verschiedene Faktoren, die bestimmen, ob IN oder EXISTS ausgerollt werden. Eine davon ist die Datenmenge, die in der Tabelle verfügbar ist. Eine große Menge an Daten führt dazu, dass der SQL-Server zur Verwendung eines Index-Scans zurückkehrt, anstatt einen Index-Seek zu verwenden.

Unterschiede

Die angegebenen Statistiken sagen auch viel über den Ausführungsplan aus, der befolgt werden sollte. Der Unterschied wird angezeigt, wenn der Server genügend Statistiken gesammelt hat, um eine gültige Entscheidung zu treffen, und wenn es keine Statistik zum ersten Mal gibt. Die verwendete Hardware bestimmt auch, ob IN oder EXISTS verwendet werden. Dies hängt weitgehend von der Anzahl der verfügbaren CPUs ab.

EXISTS werden ausgeführt, wenn Ergebnisse einer Abfrage mit einer anderen Unterabfrage abgeglichen werden müssen. IN wird dagegen verwendet, wenn die Werte bestimmter Spalten abgerufen werden, die innerhalb einer Liste liegen. Die Entscheidung, die zu verwenden ist, beruht ausschließlich auf Angemessenheit, d. e. wenn Sie das Gefühl haben, dass seine Verwendung angemessen ist.

Für den Fall, dass eine Unterabfrage verwendet wird und ein Nullwert zurückgegeben wird, wird die gesamte Anweisung NULL. Dies deutet auf die Verwendung des EXISTS-Schlüsselworts hin. Die Verwendung des Schlüsselworts IN kommt zustande, wenn ein Vergleich verschiedener Werte in Unterabfragen erforderlich ist. Das EXISTS-Schlüsselwort wird hauptsächlich bei der Auswertung von True- oder False-Anweisungen verwendet, und IN wird in den meisten entsprechenden Unterabfrageanweisungen verwendet.

EXISTS sind im Allgemeinen schneller als IN, da EXISTS ausgeführt werden, wenn die Suche einen Treffer gefunden hat und überprüft, ob sich die Bedingung als wahr herausgestellt hat. Beim Ausführen von IN werden alle Ergebnisse aus der Unterabfrage gesammelt und zur weiteren Verarbeitung bereitgestellt. Dieser Vorgang dauert eine Weile.

Es ist wichtig zu beachten, dass die Formulierung der Abfrage richtig ausgeführt und vor der Ausführung überprüft werden muss. Wenn nicht sichergestellt wird, dass die Abfrage korrekt ist, führt dies dazu, dass EXISTS und IN unterschiedliche Werte darstellen, und dies ist nicht das Ziel ihrer Verwendung in SQL Server. Der Optimierer muss immer optimal sein, wenn er so arbeitet wie er sollte.

Zusammenfassung

Die Problemlösung in TSQL wird normalerweise mit EXISTS und IN durchgeführt.

Geringfügige Unterschiede werden beim Ausrollen von EXISTS und IN beobachtet, obwohl die Optimierung für jeden den gleichen Wert ergeben sollte.

Statistiken sind eine der Determinanten dafür, ob EXISTS oder IN ausgerollt werden.

Die verwendete Hardware ist auch entscheidend für die Entscheidung, ob EXISTS oder IN bereitgestellt werden soll.

Die Ausführung von EXISTS wird nützlich sein müssen die Ergebnisse einer bestimmten Abfrage mit einer anderen Unterabfrage korrelieren.EXISTS ist auch sehr häufig, wenn wahre oder falsche Aussagen ausgewertet werden müssen.

IN wird häufig verwendet, wenn bestimmte Spalten in einer Liste abgerufen werden müssen. Es wird auch häufig verwendet, wenn der Vergleich von Werten in Unterabfragen erforderlich ist.

EXISTS ist in der Regel schneller als IN, wenn es ausgeführt wird, findet einen Treffer und überprüft, ob sich die Bedingung als wahr erwiesen hat.

IN ist langsamer, da alle Ergebnisse der Unterabfrage gesammelt und verarbeitet werden.

Obwohl verschiedene Ausführungen vorhanden sind, sollte die Optimierung in EXISTS und IN ähnliche Ergebnisse liefern.