![]() |
AW: IN mit einem Parameter
Du hast weniger Arbeit, aber dafür mit das QuotedStr ordentlich arbeiten (korrekt die Quotes setzen), wofür zusätzliche Stringoperationen nötig sind
und dann muß das DBMS diesen String auch wieder zerlegen, was bei den Parametern nicht so aufwändig ist. |
AW: IN mit einem Parameter
Danke an Sir Rufo und Himitsu für die Anregung, ich hatte zwar an dieser Ecke bisher nie Performanceprobleme werde mich aber doch mal etwas ausgiebiger damit beschäftigen.
|
AW: IN mit einem Parameter
Und auch nur gefühlt mehr Arbeit
Delphi-Quellcode:
die Funktion
QryStr := '... Where Feld In (' + ParStr( 5 ) + ')';
Delphi-Quellcode:
liefert dir dann die entsprechenden Parameter-Felder in der gewünschten Anzahl.
ParStr( Count : integer )
Nun ist der Aufwand die Werte an die Parameter zu übergeben geringer als diese als String aufzubauen. |
AW: IN mit einem Parameter
nur noch eine kleine Rückfrage, habt ihr Erfahrungen damit ob es bei einer hohen IN-Anzahl bei der Parametrisierten Form, die ja nur Sinn macht wenn man Prepared fährt z.B. bei MS-SQLserver ein Limit gibt.
Der SQL kann ja prinzipiell beliebig lang werden, die Frage wäre gibt es bei der Parameteranzahl möglicherweise eine Grenze? |
AW: IN mit einem Parameter
Ab einer bestimmten Parameter-Anzahl müsste man mal das Konzept überdenken.
Ansonsten bleibt immer noch die Möglichkeit die Werte in eine temp. Tabelle zu übertragen und dann wie folgt prüfen
Code:
Where Feld In ( Select tmpFeld From tmpTab )
|
AW: IN mit einem Parameter
SQL mäßig fühle ich mich sehr sattelfest (wegen IN TMP :-D), aber vor ich diesen Ansatz in einer stark ausgelasteten Netzwerkumgebung wähle würde ich hier die althergebrachte IN (BastelString) Lösung weiter präferieren.
LG Thomas |
AW: IN mit einem Parameter
Zitat:
Die Anzahl der Parameter ist aber variabel und somit ist es nur Zufall, wenn die Abfragen gleich sind. Somit bringt ein Prepared überhaupt nichts, wenn es sich nicht sogar negativ auswirkt, weil vorbereitet, dann abgefragt wird und dies bei jeder Abfrage. |
AW: IN mit einem Parameter
FireBird prepared zudem automatisch
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz