Der alte IN vs. Exists vs. Left Join (wobei ___ Null ist oder nicht Null ist); Performanc

Ich habe mich in einer ziemlichen Essiggurke wiedergefunden. Ich habe Tabellen mit nur einer Spalte (Unterdrückungs- oder Einschlusslisten), die mehr oder weniger varchar (25) sind, aber die Sache ist, dass ich keine Zeit habe, sie zu indizieren, bevor ich sie in der Hauptabfrage verwende, und je nachdem, wie wichtig es ist, Ich werde nicht wissen, wie viele Zeilen in jeder Tabelle sind. Die Basistabelle, die das Herzstück bildet, besteht aus rund 1,4 Millionen Zeilen und rund 50 Spalten.

Meine Annahmen lauten wie folgt:

IN sollte nicht in Fällen mit vielen zurückgegebenen Werten (Zeilen) verwendet werden, da die Werte seriell durchgesehen werden, oder? (In einer Unterabfrage wurden die Werte nicht direkt übergeben.)

Joins (INNER für Inklusion und LEFT und Überprüfung auf Nullen bei Unterdrückung) eignen sich am besten für große Datenmengen (über 1k Zeilen oder so)

EXISTS hat mich immer beunruhigt, weil es für jede Zeile eine Unterabfrage zu machen scheint (alle 1,4 Millionen? Huch.)

Mein guter Spruch, wenn machbar, ermitteln Sie die Anzahl der Unterdrückungstabellen und verwenden Sie entweder IN (für Sub-1k-Zeilen) oder INNER / LEFT Join (für Unterdrückungstabellen über 1k-Zeilen) der große Basistisch, aber der Unterdrückungstisch wird nicht sein. Gedanken

ielen Dank im Voraus für alle Kommentare und / oder Ratschläg

Antworten auf die Frage(4)

Ihre Antwort auf die Frage