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
Seite 2 von 3     12 3      
tsteinmaurer

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

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 14: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.388 Beiträge
 
Delphi 12 Athens
 
#12

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 15: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
 
#13

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 15: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
 
#14

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 15: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
 
#15

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 16: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
mkinzler
(Moderator)

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

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 16:04
Zitat:
Profilabhängige Sichtbarkeit einzelner Records ist mir neu
Es hängt aber vom Transaktionskontext ab.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

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

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 16:11
PS: Welches RDMBS optimiert das Count(*)?
z.B. ADS.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#18

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 16:18
Und die Anzahl der Datenstätze einer Tabelle sollte ein RDBMS schon kennen. Aber ist eh Wunschdenken
Tja, also in einer Single User DB ist das ja sehr übersichtlich. Aber auch da geht es schon los, je nach isolation level...
Wie lange läuft die Transaktion schon?
Wieviel/welche insert, (Update bei max/min), delete wurden innerhalb der Transaktion bereits gefahren?
Wieviele waren es vorher?
Ergibt zusammen?
Commit oder Rollback?

Dann im Mehrbenutzer System ..

Wünschen kann man sich natürlich viel, besonders wenn man für eine Software Geld bezahlt. Das ist aber bei FB nicht so.
Aber vielleicht nehmen die ja Spenden und kleine Wunschlisten ..
Gruß, Jo
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#19

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 16:29
[QUOTE=jobo;1257731Wünschen kann man sich natürlich viel, besonders wenn man für eine Software Geld bezahlt. Das ist aber bei FB nicht so.[/QUOTE]
Ich wünschte mir das nicht bei Firebird (weil open soße und eh nicht mein Tool) sondern bei den angeblich so perfekten teuren RDMBS. Und wenn ADS das kann... geht es also, egal ob mit oder ohne Transaktion oder wie auch immer. Wenn man 'select max(indexSpalte) from Tabelle' optimieren kann, dann ja wohl auch 'select count(*) from Tabelle'. Aber wir schweifen ab.

FB hat hier einen kleinen Schwachpunkt. Muss man wissen, dann krepelt man sich einen Extra-Index dafür und hat die Sache vergessen.
  Mit Zitat antworten Zitat
tsteinmaurer

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

AW: Firebird Leistung Index Max

  Alt 2. Mai 2014, 17:39
Code:
Aber vielleicht nehmen die ja Spenden und kleine Wunschlisten ..
Die Firebird Foundation nimmt auch grosse Spenden und auch grosse Wunschlisten. Das SELECT COUNT(*) wirst du vermutlich aber trotzdem nicht schneller bekommen.

Mich würde interessieren, für was du ein COUNT(*) brauchst? Um zu überprüfen, ob eine Tabelle leer ist? Oder doch die exakte Anzahl? Oder darf es eine ungefähre Anzahl sein?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 12:06 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