AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird Leistung Index Max
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Leistung Index Max

Ein Thema von haentschman · begonnen am 2. Mai 2014 · letzter Beitrag vom 2. Mai 2014
Antwort Antwort
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#1

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 11:31
Firebird hat keine bi-direktionalen Indizes, darum brauchst du einen DESCENDING Index um ein MAX daraus bedienen zu können.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#2

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 13:49
Das hab ich auch nun schmerzlich festgestellt.
Für MIN gilt natürlich das ganze umgekehrt. Wie sieht die Konstellation für COUNT aus? Welche Variante greift da am besten? Der IBExpert zählt sich immer einen Wolf wenn ich mal zählen lasse.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#3

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 13:57
Mit COUNT(*) fragst du nach der Anzahl aller Datensätze. Warum soll da Firebird über einen Index gehen, wenn er sowieso alle Datensätze besuchen muss?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 14:22
Prinzipiell schon logisch. Hätte ja sein können daß da was integriert ist um, sagen wir mal, Blöcke zählen statt Datensätzen oder ein Counter je Tabelle mitgeführt welcher im Hintergrund aktualisiert wird.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 14:46
Es wäre sinnvoll in *jedem* RDMBS einige kleine Optimierungen einzubauen.
Code:
select max(IndexSpalte1),min(IndexSpalte2), count(*) from ... <ohne where>
Diese drei Aggregatfunktionen könnten hochoptimiert ein Ergebnis liefern, solange in der Klausel keine Einschränkung angegeben ist. Ich finde es schade, das FB hier eine derartige Einschränkung hat. Aber selbst der SQL-Server ist zu blöd, bei einem Count(*) über eine Tabelle ohne WHERE in seiner Master-DB nachzuschauen. Bisher muss man sich in jedem RDMBS individuell einen abbrechen, um die Tabellengröße herauszubekommen.

Ach: Und soo selten sind diese Abfragen ja nu nich.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 14:56
Das kann allerdings beliebig komplex werden. Der Alias kann sich ja auch auf ein VIEW beziehen. Und falls es auch noch berechtigungsbasierte Sichtbarkeiten gibt, funktioniert das auch nicht mehr. Des weiteren müsste dieser Table-Recordcount ja auch noch in Transaktionen berücksichtigt werden. Trotzdem giebt es DB die das unterstützen, weil die Anzahl der Datensätze intern auch in den Metadaten gespeichert wird.

Dass der Index in Firebird allerdings nicht einfach "umgedreht" werden kann, empfinde ich schon als überflüssige Einschränkung (genau so wie auch die globale Sichrbarkeit von Indexnamen, aber das ist ein anderes Thema).
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 15:00
Das kann allerdings beliebig komplex werden. Der Alias kann sich ja auch auf ein VIEW beziehen. Und falls es auch noch berechtigungsbasierte Sichtbarkeiten gibt, funktioniert das auch nicht mehr. Des weiteren müsste dieser Table-Recordcount ja auch noch in Transaktionen berücksichtigt werden. Trotzdem giebt es DB die das unterstützen, weil die Anzahl der Datensätze intern auch in den Metadaten gespeichert wird.
Profilabhängige Sichtbarkeit einzelner Records ist mir neu, es geht nur um Views und machbar ist das ja (wie man beim MAX sieht). Wieso beim Count(*) nicht?

Beim Optimieren geht es ja auch darum, bestimmte Sonderfälle optimiert auszuführen. Und die Anzahl der Datenstätze einer Tabelle sollte ein RDBMS schon kennen. Aber ist eh Wunschdenken, das das mal immer und überall schön schnell ist.

PS: Welches RDMBS optimiert das Count(*)?
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz