Einzelnen Beitrag anzeigen

lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#1

Firebird - where Bedingung mit Bedingung

  Alt 3. Sep 2024, 08:20
Datenbank: Firebird • Version: 5 • Zugriff über: -
Hallo,

ich habe einen Fall den ich nicht ganz verstehe und hoffe es gibt da eine Lösung zu.
In einer where-Bedingung möchte ich anhand eines Booleans entscheiden welche Bedingung genutzt werden soll.

Code:

-- 314 indizierte reads auf die Tabelle
T.ID = 1

-- 290 indizierte reads auf die Tabelle
T.ID= 20

-- 604 indizierte reads auf die Tabelle
            ( ( TRUE and
              ( T.ID = 1)) or
              ( not TRUE and
              ( T.ID= 20)))
Warum macht Firebird bei der verschachtelten Bedingung 604 reads und nicht 314?
Kann ich das evtl. mit einem vorgegebenen PLAN beeinflussen?
Hab ich probiert aber nicht hinbekommen mit dem PLAN bisher.
  Mit Zitat antworten Zitat