![]() |
Zu wenig Arbeitsspeicher für DISTINCT
Ich habe folgende Funktion:
Delphi-Quellcode:
Ich bekomme die Fehlermeldung "Zu wenig Arbeitsspeicher für diese Operation". Aber nur, wenn ich das DISTINCT in der SQL-Anweisung habe. Ohne funktioniert es. Das kann doch nicht wirklich am Arbeitsspeicher liegen :gruebel:
procedure TMenue.PHauptmenuLaden;
var Query: TQuery; IntZaehler: Integer; begin Query := TQuery.Create(FrmMain); try with Query do begin Close; Sql.Clear; Sql.Add('SELECT DISTINCT MainMenu FROM "' + StrTabelle + '"'); Open; end; for IntZaehler := 0 to Query.RecordCount - 1 do begin slHauptmenu.Add(Query.Fields.Fields[0].AsString); Query.Next; end; finally Query.Free; end; end; Hat jemand eine Idee? |
Re: Zu wenig Arbeitsspeicher für DISTINCT
Hast du es schon mit ...
SQL-Code:
...versucht?
SELECT MainMenu
FROM XYZ GROUP BY MainMenu OT: Zu wenig Arbeitsspeicher???? Wie ist denn der Server bestückt? |
Re: Zu wenig Arbeitsspeicher für DISTINCT
Ich habe eine derartige Fehlermeldung desöfteren erhalten, wenn mehrere BDE-Anwendungen gestartet waren und/oder in diesen mehrere Datenbank-Verbindung geöffnet waren (inklusive der Delphi-IDE selbst)!
|
Re: Zu wenig Arbeitsspeicher für DISTINCT
Zitat:
Liste der ausgegebenen Werte muss im Speicher gehalten werden). Du kannst der Datenbank helfen, indem du einen Index auf das Feld MainMenu legst.
SQL-Code:
Mit dem Index kann das DBMS die Tabelle in sortierter Reihenfolge
CREATE INDEX IX_TabelleMainMenu ON Tabelle (MainMenu)
durchlaufen und es wird kein zusätzlicher Speicher für die Entfernung von Dupplikaten benötigt. |
Re: Zu wenig Arbeitsspeicher für DISTINCT
Natürlich :wall:
Der Index sollte da schon rein... |
Re: Zu wenig Arbeitsspeicher für DISTINCT
Zitat:
Danke. Mit dem Index funktioniert es. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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