Mein aktuelles Ziel ist die Erstellung einer dynamischen Auswahl und wo Abfrage. In unserem Fall haben wir eine Referenztabelle. Die Referenztabelle enthält Referenzen, Spaltenwerte und Tabellennamen. Wir erstellen eine dynamische Abfrage für die anderen Tabelle (n) mit diesen Referenzen. Beispiel:Was ist die beste Praxis für große dynamische Auswahl und wo Abfrage
select * from {table} where {pk1} in (...) and {pk2} in {...}
Bei dieser generierten Abfrage ist ein Problem aufgetreten. Das Problem ist, dass einige Zeilen im Ergebnis zurückgeben, aber sie sind nicht in Abfrage, weil in Abfragen unterschiedliche Bedingungen sind.
Geänderte SQL Generation gefällt dieses
select * from {table} where ({pk1}=(value1) and {pk2}=(value2)) or ({pk1}=(value3) and {pk2}=(value4)) ...)
In diesem Fall wird das Problem gelöst wurde, aber Abfrageausführungszeit ist nicht gut anstelle von „IN“ Abfrage. Es ist etwa 10-20 mal langsamer. Und die Abfragezeichenfolge zu groß anstelle von "IN" -Abfrage.
Wir können die Abfragen mit Tabellenwert nicht verwenden, da wir keinen neuen TYPE für jede Tabelle dynamisch erstellen können und die Spalten nicht den gleichen Typ und die gleiche Reihenfolge haben. In Zukunft können neue Tabellentypen eingefügt werden.
Also, was ist die beste Praxis, dies zu tun?
Grüße
Wie viel Wert gibt es "in" -Klausel? Zum Beispiel {pk1} in (1, 2, 3, ......, 10000) –
Es hängt von der referenzierten Tabelle ab derzeit ca. 50.000 Zeilen in einer einzigen Tabelle –