title image


Smiley Ausgabe einschränken in DB/2
Hi saluk,

also als DB/2 User muss ich da natürlich Protest einlegen ;) , dass es bei DB/2 keine Möglichkeit geben sollte per SQL nur eine bestimmte Anzahl von Zeilen zu selektieren.



Methode 1: Funktioniert ab DB/2 V7

SELECT S1,S2,S3,...

FROM T1

ORDER BY S1,S2,...

FETCH FIRST N ROWS ONLY;





Wobei N ein belibiger Zahlenwert ist.

Will man sich ein "Hintertürchen" offenhalten und zwar theoretisch alle Zeilen zurückbekommen, aber in den meisten Fällen nur eine bewisse Anzahl auch wirklich fetchen, dann kann man dieses Konstrukt verwenden:



SELECT S1,S2,S3,...

FROM T1

WHERE ...

ORDER BY ...

OPTIMIZE FOR N ROWS;



Der Optimizer errechnet den Plan dann so, dass die ersten N Zeilen möglichst schnell ermittelt sind. Ähnliche dem /*+ FIRST_ROWS_N */ Hint unter Oracle.



Methode 2: Correlated Subquery

SELECT S1,S2,S3,...

FROM T1 A

WHERE N › (SELECT COUNT(*)

FROM T1 B

WHERE A.S1 < B.S1

AND B.S1 IS NOT NULL)

ORDER BY A.S1 DESC;



Für Sybase sollte es auch eine entsprechende Methode geben - da bin ich mir (fast) sicher.



Dim





Zitat Tom Kyte:
I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

OTN's "Greatest Hits" CD

SQL-Tips.de Das SQL-Wiki


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: