Hi Ilja und auch Auge,
Hilfe ;) 8 Abfragen .... 8x Interprozesskommunikation ... 8x Marshaling
Wie kommt ihr, bzw du auf 8 optimierte Abfragen?
ArrayList l = new ArrayList();
// reagiere nur when die erste Checkbox gecheckt ist
if(checkbox1.checked)
{
// flag 1 soll geprüft werden und nur elemente mit flag 1 sollen ausgelesen werden
[code lang=sql]
SELECT [Id], [Payload] FROM [tabelle] WHERE Flag1 = 1
// ich lese die selektierten Ids in die ArrayList
}
// reagiere nur when die zweite Checkbox gecheckt ist
if(checkbox2.checked)
{
// flag 2 soll geprüft werden und nur elemente mit flag 2 sollen ausgelesen werden
~~~sql
SELECT [Id], [Payload] FROM [tabelle] WHERE Flag2 = 1
// die ArrayList von oben wird weiter gefüllt mit Ids aus der Abfrage, wenn diese nicht sowieso schon drin sind (von erster Abfrage)
}
// reagiere nur wenn dritte Checkbox (alle anderen) gecheckt ist
// wenn nicht gecheckt, dann interessiert mich dieser Fall nicht
if(checkbox3.checked)
{
// alles was Flag1 und Flag2 auf 0 hat soll ausgelesen werden
~~~sql
SELECT [Id], [Payload] FROM [tabelle] WHERE Flag1 = 0 AND Flag2 = 0
// die ArrayList von oben wird weiter gefüllt mit Ids aus der Abfrage, wenn diese nicht sowieso schon drin sind (von 1./2. Abfrage)
}
[/code]
Das Sql Statement On-the-fly zusammenbauen hat den nachteil, dass
(fast) jedes Mal der Ausführungsplan neu berechnet werden müsste.
Was auf die Dauer (trotz Connection Pooling etc) auch zu einer
Performance Reduzierung führen kann.
Grüße, bis später,
Frank