Ich habe eine Reihe von Abfragen UNION
'd zusammen. Jede Abfrage verfügt über eine WHERE... IN
-Klausel, die mit derselben ID-Liste verglichen wird.Können Sie die Ergebnisse einer Unterabfrage zwischenspeichern, die wiederholt in einer gespeicherten Prozedur verwendet wird?
In vereinfachter Form zum Beispiel Zwecke sieht es wie folgt aus:
SELECT * FROM MyTable
WHERE AuthorUserId IN (SELECT UserId FROM Users WHERE TeamId = @teamId)
UNION
SELECT * FROM MyTable
WHERE PublisherUserId IN (SELECT UserId FROM USERS WHERE TeamId = @teamId)
UNION...
und so weiter. @teamId
ist ein int gespeicherter Prozedurparameter.
Gibt es eine Möglichkeit SQL Server sagen zu der Ergebnismenge zu halten, von
SELECT UserId FROM USERS WHERE TeamId = @teamId
, damit es nicht es SELECT
für jede holen?
Sie könnten in eine temporäre Tabelle einfügen und dann Abfrage dagegen ... oder Sie könnten hoffen, dass die Ergebnisse der Unterabfrage in den allgemeinen Abfragecache gelangt. –