Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tạo chỉ mục phân cụm trong Oracle bằng cách sử dụng IOT? Sự hoang mang

Trích dẫn từ Hướng dẫn khái niệm của Oracle

Giả sử chúng ta có một bảng ĐƠN HÀNG như được mô tả trong câu hỏi của bạn.

-- 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 ;

Dữ liệu thử nghiệm

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  

Nếu bây giờ bạn chỉ tạo một IOT (bảng được tổ chức theo chỉ mục), nó sẽ trống.

-- 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

Thay vào đó, những gì bạn có thể làm là:tạo IOT bằng cách CHỌN từ bảng gốc (xem thêm:Tạo bảng song song có tổ chức theo chỉ mục tại đây ).

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

IOT kết quả chứa ...

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 

Bạn có thể tìm thấy điều này cuộc thảo luận hữu ích.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao Oracle 10g không phàn nàn về sự mơ hồ của cột?

  2. Oracle INSERT INTO SELECT (...) DUP_VAL_ON_INDEX hành vi ngoại lệ

  3. Cơ sở dữ liệu Oracle 20c Các tính năng mới

  4. Tạo tệp XML với các thẻ XML được tùy chỉnh từ bảng cơ sở dữ liệu oracle

  5. Tìm nạp NHIỀU ROWS và CỬA HÀNG trong 1 BIẾN HÌNH - QUY TRÌNH ĐƯỢC LƯU TRỮ CỦA ORACLE