Citace z Průvodce koncepty společnosti Oracle
Předpokládejme, že máme tabulku ORDER, jak je popsáno ve vaší otázce.
-- vytvořit tabulku ORDER_, s testovacími daty-- název tabulky s podtržením na konci se vyhýbá ORA-00903:neplatný název tabulkyvytvořit tabulku order_asselect level * 10000 + trunc( dbms_random.value * 100 ) order_id, trunc( dbms_random. value * 100000 ) part_id, dbms_random.string( 'x', 10 ) customer_id, trunc( sysdate + level * 10 ) order_datefrom dual connect by level <=10;
Testovací data
sql> vyberte * z řádu_; order_id part_id Customer_id Order_date 10069 74711 Kbghahwtl8 27-Mar-18 20034 99571 7Vunfjer44 06-APR-18-18-18-18-18-1818-APR-18-18-1818nSVQU-18-1818nSVQU-18-1818nSVQU-1818-APR-1818-APR-18-1818-APR18-APR18-APR18-APR18-APR18-APR-18 30039 90889 8H5G12D82E 06-May-18 60017 34107 9O4OSETJ4H 16-May-18 70078 53959 77MUCKJW82 26-May-18 80015 NYNIFONIČNÍM 1818 IN-18181181818181818.>
Pokud nyní vytvoříte IOT (index organizovanou tabulku), bude prázdná.
-- váš původní kódCREATE TABLE clust_order( order_id number, part_id number, CONSTRAINT part_pk PRIMARY KEY (part_id))ORGANIZATION INDEX;Tabulka CLUST_ORDER vytvořena.SQL> select * from clust_order;nevybrány žádné řádky
Co byste místo toho mohli udělat, je:vytvořit IOT výběrem z původní tabulky (viz také:Paralelní vytváření indexově organizované tabulky zde
).
vytvořit tabulku clust_order (part_id omezení part_pk primární klíč, order_id ) organizace indexparallelasselect part_id, order_id from order_;
Výsledný IOT obsahuje ...
sql> vyberte * z Clust_Order; part_id order_id 9496 80015 34107 60017 38487 100031 53959 70078 64160 30038 74711 10069 81247 40005 88450 90081 90881 50019 99571 20034
Můžete najít tuto diskuzi užitečné.