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|
Kategoria: Oracle 11g | Oracle 19c | Oracle 21c | SQL
Tagi: APPEND, COUNT, CREATE, DISTINCT, FIRST_ROWS, GROUP BY, HINT, INTERSECT, MINUS, PARALLEL, SUM, UNION, UNION ALL
Tagi: APPEND, COUNT, CREATE, DISTINCT, FIRST_ROWS, GROUP BY, HINT, INTERSECT, MINUS, PARALLEL, SUM, UNION, UNION ALL