Sql 有没有更好的方法在一个有数亿行的oracle表上添加多列索引?

Sql 有没有更好的方法在一个有数亿行的oracle表上添加多列索引?,sql,oracle,optimization,indexing,Sql,Oracle,Optimization,Indexing,我有一个有数亿数据的表,上面没有任何索引,现在我想在上面添加多个列索引,同时,这个操作不会影响在线环境,有没有办法尽量减少对在线环境的影响 我已尝试直接添加索引: create index give_integral_index on GIVEINFO(ssoid, integral_operate, operatestatus, source_name); 失败。您可以考虑: 添加一个ONLINE子句-这允许在索引创建期间运行DML,但会降低速度 添加一个PARALLEL子句-这可能比DO

我有一个有数亿数据的表,上面没有任何索引,现在我想在上面添加多个列索引,同时,这个操作不会影响在线环境,有没有办法尽量减少对在线环境的影响

我已尝试直接添加索引:

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

您可以考虑:

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

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

执行时间太长。