![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: Egal
[FB 2.1] Schnelle Alternative zu Count(*) ?
Hi,
Ich habe eine Tabelle mit 1 Mio Einträgen. In einer App soll ständig die Anzahl der Zeilen dieser Tabelle angezeigt werden. Ein 'SELECT COUNT(*) FROM TABELLE' dauert ewig. Frage: Gibt es eine schneller Alternative, um die Zeilenanzahl einer Tabelle zu ermitteln? Ich vermute, es geht irgendwie über die $RDB-Tabellen. Hat jemand einen Hint? |
Re: [FB 2.1] Schnelle Alternative zu Count(*) ?
SQL-Code:
statt
Select count(<pk>)
SQL-Code:
select Count(*)
|
Re: [FB 2.1] Schnelle Alternative zu Count(*) ?
Zitat:
Tut aber auch nicht weh wenn man die SQLs mit MSSQL, Sybase oder Ora teilen will... |
Re: [FB 2.1] Schnelle Alternative zu Count(*) ?
Hi Markus und Elvis,
Danke für den Tipp. Klappt nur leider nicht, d.h. es ist immer noch genauso lahm. |
Re: [FB 2.1] Schnelle Alternative zu Count(*) ?
|
Re: [FB 2.1] Schnelle Alternative zu Count(*) ?
Hi alzaimar,
die Anzahl der Datensätze steht doch in deiner Datenbankkomponente (ADOquery.... zumindest bei denen die ich bisher verwendet habe). Vielleicht lieg jetzt auch falsch, aber 3 Zeilen ist es Wert. Viele Grüsse! |
Re: [FB 2.1] Schnelle Alternative zu Count(*) ?
Hallo Hazard999,
nein, das ist nicht genau. Ich habe mir nun so beholfen, das ich die Anzahl in einer separaten Tabelle (1 Zeile, 1 Feld 'RowCount') per Trigger auf dem Laufenden halte. @R2009: Du meinst die 'Recordcount'-Eigenschaft. Rate mal, was die macht :zwinker: [ ] Sie weiss einfach, wie viele Zeilen in der Tabelle stehen [ ] Sie liest alle Zeilen ein (per SELECT * FROM) und zählt sie dann. (Tipp: Nur eine Antwort ist richtig) Bonusfrage: Geht das schneller? :mrgreen: |
Re: [FB 2.1] Schnelle Alternative zu Count(*) ?
Zitat:
Ernsthaft, manche fehlende Features sind böse genug, dass man sie als Bug ansehen muss. Habe glücklicherweise noch nie ein uneingeschränktes Count(...) in FB gebraucht... :angle2: |
Re: [FB 2.1] Schnelle Alternative zu Count(*) ?
Notfalls basteslt du dir halt eine eigene Systemtabelle, in welche du die Anzahl per Trigger updatest
( auch wenns der Normalisierung widerspricht) |
Re: [FB 2.1] Schnelle Alternative zu Count(*) ?
Meine, das Firebird den Index ohne WHERE gar nicht verwendet.
SQL-Code:
Habe aber keine so große Testtabelle, um den Unterschied zu testen.
Select COUNT(<pk>) FROM <table> WHERE 1=1
€: Scheint langsamer... Where kostet wohl mehr als es bringt (falls das mit dem Index s.o. stimmt) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 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