Citat fra Oracles Concepts Guide
Antag, at vi har en ORDRE-tabel som beskrevet i dit spørgsmål.
-- opret tabel ORDER_, med testdata-- tabelnavn med efterfølgende understregning undgår ORA-00903:ugyldig tabelnavnopret tabelordre_vælg niveau * 10000 + trunc(dbms_random.value * 100) order_id, trunc(dbms_random. værdi * 100000 ) part_id, dbms_random.string( 'x', 10 ) customer_id, trunc( sysdate + level * 10 ) order_datefrom dual connect by level <=10;
Testdata
SQL> VÆLG * FRA ORDER_; ORDER_ID PART_ID CURSE_ID ORDER_DATE 10069 74711 KBGHAHWTL8 27-MAR-18 20034 99571 7VUNFJER44 06-18 30038 64160 ORXP2RRA3K 16-apR-18 40005 81247 B9N43N43NSVQ7 2600-1300-18-18-18 90889 8H5G12D82E 06-maj-18 60017 34107 9O4OSETJ4H 16-maj-18 70078 53959 77MUCKJW82 26.-18.>
Hvis du nu bare opretter en IOT (indeks organiseret tabel), vil den være tom.
-- din originale kodeCREATE TABLE clust_order( order_id number, part_id number, CONSTRAINT part_pk PRIMARY KEY (part_id))ORGANISATION INDEX;Tabel CLUST_ORDER oprettet.SQL> vælg * fra clust_order;ingen rækker valgt
Hvad du kunne gøre i stedet, er:oprette IOT ved at vælge fra den originale tabel (se også:Parallelizing Index-Organized Table Creation her ).
opret tabel clust_order (part_id constraint part_pk primærnøgle, order_id ) organisation indexparallelasselect part_id, order_id from order_;
Den resulterende IOT indeholder ...
sql> vælg * fra clust_order; part_id ordre_id 9496 80015 34107 60017 38487 100031 53959 70078 64160 30038 74711 10069 81247 40005 88450 90081 90889 50019 99571 200344
Du kan muligvis finde denne diskussion nyttigt.