Autor Beitrag
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Sa 05.03.11 08:30 
Hallo Leute,

habe einen sehr merkwürdigen Effekt gefunden. Ich habe eine Datenbank (ACCESS) mit mehreren Tabellen und auf eine davon greife ich per TQuery zu. Dabei filtere ich die Daten in verschiedenster Form. Eine Filterung ist dabeio über ein boolsches Feld.

Wenn ich in dem SQL-Text stehen habe:

ausblenden Delphi-Quelltext
1:
  SQL[2] := 'WHERE Feld = -1';					


dann filtert er immer schnell.

Habe ich allerdings stehen:

ausblenden Delphi-Quelltext
1:
  SQL[2] := 'WHERE not(Feld = 0)';					


dann filtert er manchmal schnell und manchmal extrem langsam. Habt Ihr dafür eine Erklärung? Ich vermute, dass ja beim ersten Beispiel der konkrete Inhalt abgefragt wird, während beim zweiten alle möglichen Inhalte herausgesucht werden, außer 0. Da jedoch das Feld - wie gesagt - ein boolsches Feld ist (in der Datenbank als logisch definiert), gibt es m.E. ja nur zwei mögliche Feldinhalte.

Das Problem habe ich nun gelöst, indem ich immer den Text "WHERE Feld = -1" einsetze

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: Sa 05.03.11 09:42 
Hallöchen...
Zitat:
Das Problem habe ich nun gelöst

...sorry, aber in keinster Weise. Die BDE werkelt immer noch :shock:

Ich hatte letztlich auch das Vergnügen Daten aus Paradox importieren zu müssen. Ein einfaches select dauerte bis zu 3 Minuten. :shock: Ich bin fast wahnsinnig geworden. Danach hab ich auf Tables umgestellt und clientseitig gefiltert. Da war die Zeit akzeptabel.

Also: so schnell es geht weg von der BDE !

:wave:
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 05.03.11 10:20 
user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
Da jedoch das Feld - wie gesagt - ein boolsches Feld ist (in der Datenbank als logisch definiert), gibt es m.E. ja nur zwei mögliche Feldinhalte.
Nein, drei. Wahr, Falsch und leer.

Wenn du auf einen konkreten Wert prüfst, werden alle Null-Werte übersprungen. Wenn du mit not arbeitest, bin ich mir nicht sicher wie die BDE das abarbeitet. Null-Werte fallen eigentlich trotzdem heraus, aber ich weiß nicht, ob die dennoch geprüft werden.
Tranx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Sa 05.03.11 10:44 
Danke für die Info. Gut zu wissen. Mit der Abhilfe scheint es ja dann auch gut zu funktionieren. Allerdings ist es so, dass dieses Feld überhaupt keine leeren Inhalte hat, bei keinem Datensatz. Habe ich getestet. Es steht dort entweder 0 oder -1. Möglicherweise wird die Abfrage mit "not" wirklich anders umgesetzt.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.