Wskazówka FIRST_ROWS – Co Właściwie Robi I Kiedy Z Niej Korzystać

Wskazówka, która “wymusza” zwrócenie części danych w jak najszybszy sposób, to właśnie FIRST_ROWS(n). Jednak nie jest to uniwersalna wskazówka, która przyspieszy wykonywanie instrukcji SELECT i, z której można berefleksyjnie korzystać.

Co warto wiedzieć o FIRST_ROWS:

  • Korzystając ze wskazówki FIRST_ROWS(n) należy mieć na uwadzę fakt, że ta bazuje na indeksach i bardzo nie lubi się z dostępem do tabeli w trybie FULL SCAN. Wiedząc to, z hintu FIRST_ROWS nie korzysta się razem ze wskazówkami APPEND i PARALLEL, bo te bazują właśnie na trybie dostępu FULL
  • Hint ten działa tylko dla instrukcji SELECT. W DMLach jest pomijany
  • Wskazówka ta jest ignorowana dla:
    • operatora SET, czyli wszystkie UNION, UNION ALL, INTERSECT, MINUS
    • klauzuli grupowania GROUP BY
    • klauzuli FOR UPDATE
    • funkcji agregujących jak np. SUM, COUNT, AVG itd
    • operatora DISTINCT
    • sortowania GROUP BY, gdzie elementem sortowania nie jest kolumna z indeksem

Przykład użycia:

DROP TABLE T1
/

CREATE TABLE T1(id NUMBER, descr VARCHAR2(10))
/

CREATE INDEX T1_DESCR_IDX ON T1(descr)
/


INSERT INTO T1
  SELECT ROWNUM, 'A' FROM dual
    CONNECT BY ROWNUM <= 100
/

COMMIT
/


SELECT /*+ FIRST_ROWS(10) */ * FROM T1
 WHERE descr = 'A'
/

Szymon

Komentarze |0|

Legenda *) Pola oznaczone gwiazdką są wymagane
**) Możesz używać tych znaczników i atrybutów HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>