Anmelden

View Full Version : Offset für SQL - Select



Marc_w
29-03-05, 13:55
Hallo.
Ich suche eine Art Offset für SQL unter V4R3, damit ein Select nur auf die letzten 50000 (bzw. nicht auf die ersten 400000) Datensätze angewandt wird. Vielleicht hat mir einer nen Tipp.

Gruß

Marc

BenderD
29-03-05, 14:04
Hallo,

mit einem SELECT Statement alleine geht das nicht (genauer: nicht wirklich), bei der Verwendung eines scrollable Cursors oder ResultSets kann man das mit Positionierung machen; letzteres kann man auch in eine stored Procedure einbauen.

mfg

Dieter Bender


Hallo.
Ich suche eine Art Offset für SQL unter V4R3, damit ein Select nur auf die letzten 50000 (bzw. nicht auf die ersten 400000) Datensätze angewandt wird. Vielleicht hat mir einer nen Tipp.

Gruß

Marc

Marc_w
29-03-05, 15:13
Hallo,

mit einem SELECT Statement alleine geht das nicht (genauer: nicht wirklich), bei der Verwendung eines scrollable Cursors oder ResultSets kann man das mit Positionierung machen; letzteres kann man auch in eine stored Procedure einbauen.

mfg

Dieter Bender

Hallo

Danke für die schnelle Antwort. Wenn sich deine Vorschläge in ein kurzes Beispiel fassen lassen, würde ich mich darüber freuen. Ansonsten dauert es halt etwas länger mit meinen Abfragen.

Gruß

Marc

Fuerchau
30-03-05, 09:55
Wobei die Positionierung (je nach Implementierung) die 400000 Sätze aber trotzdem liest.
Wie wärs mit einer umgekehrten Sortierung und dann halt nur die 1. 50000 Sätze lesen ?

B.Hauser
30-03-05, 10:19
Wobei die Positionierung (je nach Implementierung) die 400000 Sätze aber trotzdem liest.
Wie wärs mit einer umgekehrten Sortierung und dann halt nur die 1. 50000 Sätze lesen ?

Dazu muss allerdings dann auch der richtige Index über dem richtigen Feld angelegt sein. Ansonsten, werden trotzdem alle Sätze gelesen, in eine temporäre Ergebnis-Datei ausgegeben und dann sortiert. Wodurch das Ganze vielleicht noch ein bisschen langsamer wird.
... Und zu glauben, man brauche nur die entsprechende logische Datei anzugeben und schon wird der angegebene Zugriffs-Pfad genommen, ist ein Irrtum!
... the optimizer may or may not use this access path.

Die Verwendung der relativen Satz-Nr. ist auch keine Lösung, da es nicht möglich ist einen Index darüber zu bilden, wird jeweils die komplette Datei gelesen.

BenderD
30-03-05, 11:03
Hallo,

diesen Effekt muss ich bei SQL immer mit auf der Rechnung haben, wenn erforderliche Zugriffspfade fehlen und er lässt sich (fast) immer ausschließen, falls der Hersteller der Datenbank nicht zu blöd war das ordentlich zu ptogrammieren, wie bei DB2/400 und dem full table scan bei der Verwendung von RRN, den Birgitta anspricht.

mfg

Dieter Bender


Wobei die Positionierung (je nach Implementierung) die 400000 Sätze aber trotzdem liest.
Wie wärs mit einer umgekehrten Sortierung und dann halt nur die 1. 50000 Sätze lesen ?