=====Oracle 12c Datenbank - native Top-N Abfragen=====
Eine native Top-N Abfrage ist nun auch in 12c Oracle möglich!
Zuvor mit 11g und Analytic Function => [[prog:oracle_analytic_functions_top_n|Oracle Analytic Function - Beispiel 2 - Top N Query]]
Selektiere die Top 5:
**FETCH FIRST 5 ROWS ONLY**
select object_id
, object_name
from dba_objects
order by object_id desc
FETCH NEXT 5 ROWS ONLY
/
OBJECT_ID OBJECT_NAME
------------ ------------------------------
129319 WRP$_REPORTS_DETAILS_IDX02
129318 WRP$_REPORTS_DETAILS_IDX01
129317 SYS_IL0000006450C00009$$
129316 SYS_LOB0000006450C00009$$
129315 WRP$_REPORTS_DETAILS
Hole nach einem Offset von 5 die Top 5 (Blättern):
**OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY**
select object_id
, object_name
from dba_objects
order by object_id desc
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY
/
OBJECT_ID OBJECT_NAME
------------ ------------------------------
129314 WRP$_REPORTS_IDX02
129313 WRP$_REPORTS_IDX01
129312 WRP$_REPORTS
129271 MGMT_AUDIT_LOGS_IDX05
129270 MGMT_AUDIT_LOGS_IDX04
Selektiere die Top 5 + alle mit gleichen Werten:
**FETCH FIRST 5 ROWS WITH TIES**
Selektiere die Top 5 Prozent aus der Tabelle:
**FETCH FIRST 5 PERCENT ROWS ONLY**
select OWNER
,SEGMENT_NAME
,BYTES
from dba_segments
FETCH FIRST 1 PERCENT ROWS ONLY
/
Intern sehen die Ausführungspläne nach eine Umsetzung über Analytical Funktionen aus.
==== Quellen ====
* DOAG 2014 - Konfernzvortrag