sql >> Database >  >> RDS >> Oracle

Een geclusterde index maken in Oracle met behulp van een IOT? Verwardheid

Citaat uit Oracle's Concepts Guide

Stel dat we een ORDER-tabel hebben zoals beschreven in uw vraag.

-- create table ORDER_, with test data
-- table name with trailing underscore avoids ORA-00903: invalid table name
create table order_
as
select 
  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_date
from dual connect by level <= 10 ;

Testgegevens

SQL> select * from order_ ;
ORDER_ID  PART_ID  CUSTOMER_ID  ORDER_DATE  
10069     74711    KBGHAHWTL8   27-MAR-18   
20034     99571    7VUNFJER44   06-APR-18   
30038     64160    ORXP2RRA3K   16-APR-18   
40005     81247    B9N43NSVQ7   26-APR-18   
50019     90889    8H5G12D82E   06-MAY-18   
60017     34107    9O4OSETJ4H   16-MAY-18   
70078     53959    77MUCKJW82   26-MAY-18   
80015     9496     U5J6Z85KXR   05-JUN-18   
90081     88450    2LEUPZGFOS   15-JUN-18   
100031    38487    NX4BHBF3TN   25-JUN-18  

Als u nu gewoon een IOT (index georganiseerde tabel) aanmaakt, is deze leeg.

-- your original code
CREATE TABLE clust_order(
    order_id number,
    part_id number,
    CONSTRAINT part_pk PRIMARY KEY (part_id)
)ORGANIZATION INDEX;

Table CLUST_ORDER created.

SQL> select * from clust_order ;

no rows selected

Wat je in plaats daarvan zou kunnen doen, is:maak de IOT door te SELECTEREN uit de originele tabel (zie ook:Parallelizing Index-Organized Table Creation hier ).

create table clust_order 
( 
  part_id constraint part_pk primary key
, order_id 
) 
organization index
parallel
as
select 
  part_id
, order_id 
from order_;

De resulterende IOT bevat ...

SQL> select * from clust_order;
PART_ID  ORDER_ID  
9496     80015     
34107    60017     
38487    100031    
53959    70078     
64160    30038     
74711    10069     
81247    40005     
88450    90081     
90889    50019     
99571    20034 

Mogelijk vindt u deze discussie nuttig.




  1. Het failovermechanisme van MaxScale gebruiken?

  2. Geparametriseerde IN-clausule in voorbereide instructie met behulp van MySql, PHP en ADODB

  3. hoe Telugu-tekens in de Indiase taal in te voegen in mysql

  4. NodeJS antwoordde dat de MySQL-tijdzone anders is als ik rechtstreeks uit MySQL haal