AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Sortierstrategie über mehrere Tabellen

Sortierstrategie über mehrere Tabellen

Ein Thema von ibp · begonnen am 7. Apr 2011 · letzter Beitrag vom 7. Apr 2011
Antwort Antwort
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#1

Sortierstrategie über mehrere Tabellen

  Alt 7. Apr 2011, 11:21
Datenbank: Interbase • Version: ab 6.5 • Zugriff über: BDE
Hallo Wissende,

ich suche eine performante Lösung für nachfolgendes Problem.

In der Tabelle "Baum" (Namen von der Redaktion geändert ) stellen die Datensätze (>100.000) einen Baum dar, die Reihenfolge der Knoten einer Ebene ist in einem Feld Reihenfolge festgelegt. Die Daten selber stehen in x anderen Tabellen. Über Keys werden die jeweiligen Referenzen hergestellt. Es kommt vor, dass in einer Baumebene mehrere Daten von unterschiedlichen Tabellen zusammen kommen.

Bisher wurde in der Applikation immer nur eine Baumebene sortiert, das war alles kein Problem. Jetzt gibt es eine neue Anforderung, es sollen alle Kindknoten von einem Startknoten aus neu sortiert werden. Dabei kann es vorkommen, dass die Knoten unterschiedliche Sortierdefinitionen haben.

1. Versuch: Gehe alle Ebenen durch, sortiere die anstehenden Daten mittels den versch. Sortierdefinitionen und schreibe die Rangfolge in ein Feld von Tabelle Baum. Leider dauert das unter Umständen zu lange. Das sortieren selber nicht, aber die Daten zusammenzutragen.

2. Versuch: Erstelle für jede der Tabellen ein Feld (tabXsortfeld), in dem die zusammengesetzten Daten nach Sortierdefinition geschrieben werden. Die Geschwindigkeit ist bei einem Update einer Tabelle mit ca. 10k zu vernachlässigen (<1s). Da aber in einer Baumebene unterschiedliche Tabellen datem zusammengefügt sind, wollte ich nun von jeder der anderen betroffenen Tabellen die Datensätze vom tabXsortfeld in ein korrespondierenden Feld von Tabelle Baum schreiben. Nur ist das leider enorm langsam.
Code:
update baum set baumsortfld=(select tabXsortfeld from tab x where tabx_pkey=baum_recordkey)
Was könnte man noch machen?

Wie kann man schnell eine selektierte Datenmenge von einer Tabelle in ein Feld einer anderen Tabelle schreiben?


Danke schon mal...
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.332 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Sortierstrategie über mehrere Tabellen

  Alt 7. Apr 2011, 11:52
Versuch mal so:
Code:
create procedure P_BAUMSORT_TABX
as
/* ... */
begin
  /* einmaliger Zugriff auf alle Datensätze */
  for select tabx_pkey, tabXsortfeld
  from       tab x
  into       :tabx_pkey, :tabXsortfeld
  do begin
    /* Index (baum_recordkey) */
    update baum
    set   baumsortfld = :tabXsortfeld
    where baum_recordkey = :tabx_pkey;
  end
end
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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