Einzelnen Beitrag anzeigen

Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
329 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Index wird nicht imme rbenutzt

  Alt 4. Dez 2016, 14:36
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBX
Hallo Delphianer,
ich habe hier ein sehr komische Verhalten von Firebird was ich mir nicht erklären kann.
Ich benutzte eine Abfrage und habe mich gewundert warum es so lange dauert. Dann habe ich bemerkt, das hier ein Index nicht benutzt wird. Wenn ich den SQl umstelle wird der Index benutt. Wie kann denn das sein ? Ich haben mal beide Select hier stark gekürtzt und eingefügt. In jeder Tabelle ist ein Index auf Ref un in Tabelle2 zusätzlich noch ein Index auf Auftrag.

Hier wird der Index nicht benutzt:

Delphi-Quellcode:
Select Tabelle1.* from Tabelle1
Left Outer Join Tabelle2 on Tabelle1.Ref = Tabelle2.ReF
where Tabelle2.Auftrag = '66'
Hier wird der Index benutzt und es geht natürlich um einiges schneller als oben

Delphi-Quellcode:
Select Tabelle1.* from Tabelle2
Left Outer Join Tabelle1 on Tabelle2.Ref = Tabelle1.Ref
where Tabelle2.Auftrag = '66'

Als Ergebnis kommen hier genau 5 Datensätze raus welche aus nur bei Version 2 "geladen" werden müssen.
Verstehen kann ich das ganz nicht. Könnte mir das jemand erklären ? Das Ergebnis ist wie gesagt gleich nur die Zeit die es deuert in unterschiedlich da bei der 1. Version kein Index benutzt wird.

Danke Tanja
Tanja
  Mit Zitat antworten Zitat