"100 mal eine
Query"
Klingt etwas nach der berühmten Whileschleife für Queries.
Häufig kann man das IN zu einem JOIN auflösen. Das hilft nicht unbedingt weiter, außer in einem speziellen Fall. Wenn nämliche die vielen IN Werte alle an einem oder wenigen "Parent" Werten einer übergeordneten Tabelle hängen.
Gegenanzeige wäre bspw. das in dem IN disjunkte Werte aus einer Suchmaske stecken.
Wenn also die Zahl 100 darauf hindeutet, das in dieser 100er Schleife eine Dimension oder Menge durchgearbeitet wird, die man auch insgesamt in eine "große"
Query auflösen kann, wäre das eine mögliche Lösung, das IN fliegt dann idealer Weise raus.
Also Frage wäre: Gibt es zu den 100 Abfragen eine Master
Query?
Und wenn ja, wie sieht die aus?
Handarbeitslösung:
Die IN Werte in eine (temporäre) User spezifische Tabelle eintragen und die jetzige
Query dagegen joinen. Oder bei einer bekannten Maximalanzahl von IN Werten, z.B. 5, mit 5 verschiedenen Queries arbeiten und jeweils die
Query starten, die dazu dieser Parameter Anzahl entspricht.
Oder den fixen Teil der
Query in einen View packen und auf Parametrieung und Prepare der IN Anweisung verzichten (dann ist wenigsten der View fertig prepared).