Frank (no reg): Sql Abfrage noch optimierungsfähig?

Beitrag lesen

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