2010-04-05 125 views
4

我從csv數據文件中將大量的行加載到表中。對於每個10000條記錄,我想更新表上的索引以進行優化(更新統計信息)。任何機構都告訴我我可以使用什麼命令?在Oracle.is更新統計中,什麼是SQL Server「UPDATE STATISTICS」相當於索引優化或網關統計。我正在使用Oracle 10g和11g。提前致謝。Oracle 10g和11g的索引優化和更新統計信息的命令是什麼?

回答

7

索引優化是一個棘手的問題。您可以合併索引以消除相鄰的空白塊,並且可以重建索引以完全垃圾並重新創建它。在我看來,在你的數據加載期間你可能想要做的是使索引UNUSABLE,然後當你完成時,重建它們。

ALTER INDEX my_table_idx01 DISABLE; 

-- run loader process 

ALTER INDEX my_table_idx01 REBUILD; 

你只需要一次收集統計時,你就大功告成了,而這與以DBMS_STATS一個電話完成的,就像這樣:

EXEC DBMS_STATS.GATHER_TABLE_STATS ('my_schema', 'my_table'); 
0

我會建議採取不同的方法。我會放棄索引,加載數據然後重新創建索引。啓用後,Oracle將爲您剛加載的數據建立一個良好的索引。這裏完成了兩件事,記錄加載速度更快,索引將用適當平衡的樹重新構建。 (注意:這裏要小心,如果表格是一張真正大的表格,則可能需要聲明一個臨時表格空間供其使用。)

drop index my_index; 

-- uber awesome loading process 

create index my_index on my_table(my_col1, my_col2);