3
索引組織表有一個奇怪的問題。我正在運行Oracle 11g標準。創建索引組織表問題
我有src_table
SQL> desc src_table;
Name Null? Type
--------------- -------- ----------------------------
ID NOT NULL NUMBER(16)
HASH NOT NULL NUMBER(3)
........
SQL> select count(*) from src_table;
COUNT(*)
----------
21108244
表,現在讓我們創建另一個表,並從src_table
複製2列set timing on
SQL> create table dest_table(id number(16), hash number(20), type number(1));
Table created.
Elapsed: 00:00:00.01
SQL> insert /*+ APPEND */ into dest_table (id,hash,type) select id, hash, 1 from src_table;
21108244 rows created.
Elapsed: 00:00:15.25
SQL> ALTER TABLE dest_table ADD (CONSTRAINT dest_table_pk PRIMARY KEY (HASH, id, TYPE));
Table altered.
Elapsed: 00:01:17.35
花了甲骨文< 2分鐘。
現在一樣的工作,但與IOT表
SQL> CREATE TABLE dest_table_iot (
id NUMBER(16) NOT NULL,
hash NUMBER(20) NOT NULL,
type NUMBER(1) NOT NULL,
CONSTRAINT dest_table_iot_PK PRIMARY KEY (HASH, id, TYPE)
) ORGANIZATION INDEX;
Table created.
Elapsed: 00:00:00.03
SQL> INSERT /*+ APPEND */ INTO dest_table_iot (HASH,id,TYPE)
SELECT HASH, id, 1
FROM src_table;
「插入」 到物聯網需要18小時!我已經在2個不同的運行在win和linux上的Oracle實例上進行了嘗試,結果相同。
這是怎麼回事?爲什麼需要這麼長時間?
@Dave。你是絕對正確的。在爲select語句添加order by(與IOT表的主鍵相同的順序)之後,花費2分鐘創建一個IOT表。謝謝。 – mtim 2010-03-25 20:52:24