Tabel sementara global dapat memiliki statistik seperti tabel lainnya. Sebenarnya mereka seperti tabel lainnya, mereka memiliki segmen data, hanya di tablespace sementara.
Dalam 11g statistik bersifat global sehingga terkadang menyebabkan masalah dengan rencana eksekusi. Dalam 12c mereka berbasis sesi sehingga setiap sesi mendapatkan sesi yang tepat (jika tersedia).
Kardinalitas tipe koleksi didasarkan pada ukuran blok DB dan untuk blok default 8 kB adalah 8168. Konten koleksi disimpan di PGA. Sangat umum untuk mengisyaratkan kardinalitas saat menggunakan tipe koleksi dalam kueri kompleks untuk mengisyaratkan pengoptimal. Anda juga dapat menggunakan antarmuka pengoptimal yang diperluas untuk menerapkan cara sendiri dalam menghitung biaya.
Sunting - tes tambahan:
CREATE TYPE STRINGTABLE IS TABLE OF VARCHAR2(255);
CREATE GLOBAL TEMPORARY TABLE TMP (VALUE VARCHAR2(255));
INSERT INTO TMP SELECT 'Value' || LEVEL FROM DUAL CONNECT BY LEVEL <= 1000000;
DECLARE
x STRINGTABLE;
cnt NUMBER;
BEGIN
SELECT VALUE BULK COLLECT INTO x FROM TMP;
DBMS_OUTPUT.PUT_LINE(TO_CHAR(SYSTIMESTAMP, 'MI:SS.FF3'));
SELECT SUM(LENGTH(VALUE)) INTO cnt FROM TMP;
DBMS_OUTPUT.PUT_LINE(TO_CHAR(SYSTIMESTAMP, 'MI:SS.FF3'));
SELECT SUM(LENGTH(COLUMN_VALUE)) INTO cnt FROM TABLE(x);
DBMS_OUTPUT.PUT_LINE(TO_CHAR(SYSTIMESTAMP, 'MI:SS.FF3'));
END;
Dalam hal ini adalah akses ke GTT sekitar dua kali lebih cepat daripada pengumpulan, cca 200 ms vs 400 ms di mesin uji saya. Ketika saya menambah jumlah baris menjadi 10 000 000, saya mendapatkan ORA-22813:nilai operan melebihi batas sistem pada kueri kedua.