AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Merkwürdikeit bei Select max(id) from..
Thema durchsuchen
Ansicht
Themen-Optionen

Merkwürdikeit bei Select max(id) from..

Ein Thema von WoGe · begonnen am 26. Aug 2007 · letzter Beitrag vom 27. Aug 2007
Antwort Antwort
Seite 2 von 2     12   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Merkwürdikeit bei Select max(id) from..

  Alt 26. Aug 2007, 21:40
Diese Kompatibilität gilt auch für FB2. Allerdings weiß man nicht wie lange noch. Alternativen wären
IBDAC, FIBplus, Zeos, UIB, MDO, ...
Markus Kinzler
  Mit Zitat antworten Zitat
WoGe

Registriert seit: 16. Jun 2005
Ort: Kelkheim
178 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: Merkwürdikeit bei Select max(id) from..

  Alt 26. Aug 2007, 22:06
Hallo,

jetzt hab ich folgenden Server : Server version: WI-V6.3.1.12855 Firebird 2.0
und diesen IBExpert: Version 2007.07.20

Leider verwendet der immernoch den PLAN SORT ((ROHWERTE NATURAL))

Besteht die Möglichkeit, das noch irgendwas anderes da Einwirken könnte?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Merkwürdikeit bei Select max(id) from..

  Alt 26. Aug 2007, 22:08
Vielleicht die Anzahl der Datensätze. Was für ein Typ hat das Feld?
Markus Kinzler
  Mit Zitat antworten Zitat
WoGe

Registriert seit: 16. Jun 2005
Ort: Kelkheim
178 Beiträge
 
Delphi 10.3 Rio
 
#14

Re: Merkwürdikeit bei Select max(id) from..

  Alt 26. Aug 2007, 22:53
Das Feld ist vom Typ Bigint

Die Anzahl der Datensätze habe ich auf ca. 500.000 reduziert.
Zudem habe ich ein Feld Ar2 vom Typ Integer erzeugt und mit dem Inhalt von AR gefüllt und einen Index dazu erstellt.

Auch hier bleibt alles wie gehabt.
Ich werde jetzt noch mal auf 250.000 Sätze reduzieren und AR enfernen.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#15

Re: Merkwürdikeit bei Select max(id) from..

  Alt 27. Aug 2007, 02:30
Das beobachtete Verhalten erklärt sich wie folgt:

Firebird kennt sowohl ascending als auch descending indices.
PKs werden automatisch ascending angelegt.
Um die Max()-Funktion auszuführen, guckt der Optimizer nach, ob es zu dem entsprechenden Feld einen DESCENDING Index gibt. Ist ein solcher nicht vorhanden, so wird gar kein Index genutzt.
Leg Dir also zusätzlich einen descending index auf das Feld, das Du mit der MAX()-Funktion bearbeiten willst und Dein Problem ist gelöst.

Dies ist auch der einzige Weg, die volle Geschwindigkeit zu erhalten.
Verwendet man die Variante mit dem first 1 und der descending order ohne den descending index anzulegen, so ist der db-Server immernoch gezwungen, den vollen Index zu durchlaufen.

Gruß

Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
WoGe

Registriert seit: 16. Jun 2005
Ort: Kelkheim
178 Beiträge
 
Delphi 10.3 Rio
 
#16

Re: Merkwürdikeit bei Select max(id) from..

  Alt 27. Aug 2007, 08:36
Super!!!

Zitat von onlinekater:
Das beobachtete Verhalten erklärt sich wie folgt:

Firebird kennt sowohl ascending als auch descending indices.
PKs werden automatisch ascending angelegt.
Um die Max()-Funktion auszuführen, guckt der Optimizer nach, ob es zu dem entsprechenden Feld einen DESCENDING Index gibt. Ist ein solcher nicht vorhanden, so wird gar kein Index genutzt.
Leg Dir also zusätzlich einen descending index auf das Feld, das Du mit der MAX()-Funktion bearbeiten willst und Dein Problem ist gelöst.
Das funktioniert genau wie beschrieben, das Problem ist hiermit gelöst.
Der Optimizer verwendet jetzt auf allen mit einem DESCENDING Index versehenen Felder auch diesen und ist entsprechend schnell.

Danke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz