Announcement

Collapse
No announcement yet.

An das Ende einer Tabelle springen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • An das Ende einer Tabelle springen

    Hallo,
    wir testen zur Zeit mehrere Datenbanken. Die Daten werden sehr schnell angezeigt. Springt man nun ans Ende der Tabelle, so dauert es ewig bis ein Antwort kommt. Der Zugriff erfolgt über TQuery. Es sind etwa 260.000 Datensätze vorhanden. Die Datenbanken sind Oracle uns SAP.DB.
    Über welche Komponente kann am schnellsten zugefriffen werden und wie kann man den Zugriff auf die letzten Datensätze beschleunigen?

    Vielen Dank

    Jan Stollberg

  • #2
    Hallo,

    >Springt man nun ans Ende der Tabelle, so dauert es ewig bis ein Antwort kommt.

    In diesem Fall fordert das Programm alle (!) Datensätze der Tabelle von der SQL-Datenbank ab, um diese <b>lokal</b> im Arbeitsspeicher zwischenzupuffern. Je nach Netzwerkbandbreite dauert dieser Vorgang.

    &gt;wie kann man den Zugriff auf die letzten Datensätze beschleunigen

    Indem das Programm <b>niemals</b> alle Datensätze der Tabelle über ein <i>SELECT * FROM Tabelle</i> abfordert, sondern statt dessen eine geeignete WHERE-Einschränkung nutzt, um die Anzahl der Datensätze zu begrenzen, die übertragen werden müssen. Anstelle alle 260 000 Datensätze auf einmal anzufordern, sollte das Programm die Aufgabe in viele einzelne SELECTs aufteilen, wobei die WHERE-Einschränkung immer nur kleine Häppchen anfordert.

    Ich glaube kaum, das es einen Anwender gibt, der 260000 Datensätze gleichzeitig sehen und verarbeiten will

    Comment


    • #3
      Hallo,
      Gibt es noch eine Komponente die einen schnelleren Zugriff ermöglichen?
      Die 260000 Datensätze sind unsere Testdaten, da unsere Kunden teilweise diese Datenmengen in einem Jahr erzeugen. Bei Auswertungen über diesen Zeitraum kann es zur Anzeige aller Daten kommen

      Comment


      • #4
        Hallo,

        &gt;Bei Auswertungen über diesen Zeitraum kann es zur Anzeige aller Daten kommen

        bei einer SQL-Datenbank sollte die Datenverarbeitung auf der Server-Seite stattfinden - die Benutzeroberfläche wird nur für das Anzeigen des Ergebnisses benötigt. Ich glaube nicht, dass irgendjemand mit 260 000 gleichzeitigen Datensätzen in der Benutzeroberfläche umgehen kann.

        Das grundlegende Problem darin liegt, dass der Client bei einer mengenorientierten SQL-Datenbank immer nur eine Kopie der Daten erhält und somit die Datensätze der Ergebnismenge zum Client transportiert werden müssen, damit dieser den "letzten" Datensatz auch als solchen erkennen kann. Die Zeitverzögerung entsteht im Netzwerk - so dass die Wahl der Komponente nebensächlich ist. Die einzige Ausnahme von dieser Regel besteht darin, die Daten nicht im TDBGrid etc. anzuzeigen, so dass der Client immer nur mit 2 gleichzeitigen Datenpuffern auskommt (Eigenschaft <b>UniDirectional</b>). Aber auch dann bleibt das Problem der Datenübertragung über das Netzwerk

        Comment


        • #5
          Hi,

          etwas deutlicher: Sechs ! setzen ! Und Grundsätze von C/S-Systemen pauken. ;-)

          Gruß
          Gesin

          Comment

          Working...
          X