5

我正在将大量行从 csv 数据文件加载到表中。对于每 10000 条记录,我想更新表上的索引以进行优化(更新统计信息)。任何人告诉我我可以使用什么命令?此外,Oracle.is 中的 SQL Server“UPDATE STATISTICS”等价物是什么 更新统计意味着索引优化或门限统计。我正在使用 Oracle 10g 和 11g。提前致谢。

4

2 回答 2

8

索引优化是一个棘手的问题。您可以合并索引以消除相邻的空块,您可以重建索引以完全丢弃并重新创建它。在我看来,在数据加载期间您可能希望做的事情是使索引无法使用,然后在完成后重新构建它们。

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');
于 2010-04-05T14:58:52.483 回答
0

我建议采取不同的方法。我会删除索引,加载数据,然后重新创建索引。启用它后,Oracle 将在您刚刚加载的数据上建立一个良好的索引。这里完成了两件事,记录将加载更快,索引将使用适当平衡的树重建。(注意:这里要小心,如果表是一个非常大的表,你可能需要声明一个临时表空间让它在其中工作。)

drop index my_index;

-- uber awesome loading process

create index my_index on my_table(my_col1, my_col2);
于 2010-04-11T17:23:51.140 回答