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

Beitrag lesen

Hallo,

ich muss gerade eine Datenbankabfrage entwickeln, die mehrere Bit-Flag
(bzw. boolsche) Spalten prüft und frage mich ob das von mir entwickelte
Sql a) der Anforderung gerecht wird   b) noch optimiert werden könnte.

Ein Objekt hat zwei Bit-Flags, die unabhängig voneinander true (1)
oder false (0) sein können, damit ergeben sich 4 mögliche Zustände
pro Datensatz:
1 1
1 0
0 1
0 0

Die Tabelle sieht entsprechend aus:

Id      Payload       Flag1      Flag2
----------------------------------------------
1       ...           1          0
2       ...           1          1
3       ...           0          0

Für die Ausgabe möchte ich eine Filtermöglichkeit für Werte der Tabelle
schaffen, indem ich den Benutzer Checkboxen anklicken lasse

[ ] Elemente mit Flag 1 gesetzt
[ ] Elemente mit Flag 2 gesetzt
[ ] alle anderen Elemente                 (beide Flags sind 0)

Ich habe die Datenbankabfrage wie folgt abgebildet:

  
DECLARE @varFlag1 bit, @varFlag2 bit, @varOthers bit  
  
SELECT [Id], [Payload]  
FROM [tabelle1]  
WHERE (([Flag1] | [Flag2]) & @varOthers) = @varOthers  
AND ([Flag1] & @varFlag1) = @varFlag1  
AND ([Flag1] & @varFlag2) = @varFlag2  

Das scheint aber irgendwie zu überkandidelt in Hinblick auf die
Verwendung so vieler Bit-Operatoren (| und &).

Tests an Beispieldaten haben zunächst immer das gewünschte Ergebnis
gebracht (was aber nichts heißen muss ;)) Aber könnte man dies auch
evt. eleganter lösen? Wäre sehr erfreut, wenn da jemand mal seinen
Schweif drüberblicken lassen könnte.

Danke und Ciao bis später,
Frank