【问题标题】:Any better way to add multiple-column index on a oracle table with hundreds of millions of rows?在具有数亿行的 oracle 表上添加多列索引的更好方法?
【发布时间】:2014-04-28 05:32:30
【问题描述】:

我有一张几亿数据的表,上面没有任何索引,现在想在上面添加多列索引,同时这个操作不能影响在线环境,有什么方法可以尽量减少对在线环境的影响?

我试过直接添加索引:

create index give_integral_index on GIVEINFO(ssoid, integral_operate, operatestatus, source_name);

失败了。

【问题讨论】:

  • 执行时间过长。

标签: sql oracle optimization indexing


【解决方案1】:

你可以考虑:

  • 添加ONLINE 子句 - 这允许在创建索引期间运行 DML,但会减慢速度
  • 添加PARALLEL 子句 - 这可能比 DOP(并行度)快几倍,但它需要足够的资源让所有从属服务器完成它们的工作。如果您的资源非常有限,请不要使用它或使用低 DOP。它也与ONLINE 子句互斥
  • 添加 NOLOGGING 子句 - 这将重做日志写入,使其运行更快,但在恢复的情况下前滚将是不可能的

我会尝试在没有 DML/DDL 活动的窗口中使用具有最高 DOP 的 NOLOGGING + PARALLEL

【讨论】:

    猜你喜欢
    • 2014-09-01
    • 1970-01-01
    • 2019-01-08
    • 2013-08-10
    • 2013-05-04
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2015-11-10
    相关资源
    最近更新 更多