oralce数据库给所有没有索引的外键创建索引

select a.table_name,'create index idx_' || substr(a.table_name,1,20) || '_' ||
       ceil(dbms_random.value * 1000) || ' on ' || a.table_name || '( ' || a.columns  || ');'
  from (select substr(a.table_name, 1, 30) table_name,
               substr(a.constraint_name, 1, 30) constraint_name,
               max(decode(position, 1, substr(column_name, 1, 30), NULL)) ||
               max(decode(position,
                          2,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          3,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          4,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          5,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          6,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          7,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          8,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          9,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          10,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          11,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          12,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          13,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          14,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          15,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(position,
                          16,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) columns
          from user_cons_columns a, user_constraints b
         where a.constraint_name = b.constraint_name
           and b.constraint_type = 'R'
         group by substr(a.table_name, 1, 30),
                  substr(a.constraint_name, 1, 30)) a,
       (select substr(table_name, 1, 30) table_name,
               substr(index_name, 1, 30) index_name,
               max(decode(column_position,
                          1,
                          substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          2,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          3,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          4,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          5,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          6,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          7,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          8,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          9,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          10,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          11,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          12,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          13,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          14,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          15,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) ||
               max(decode(column_position,
                          16,
                          ', ' || substr(column_name, 1, 30),
                          NULL)) columns
          from user_ind_columns
         group by substr(table_name, 1, 30), substr(index_name, 1, 30)) b
 where a.table_name = b.table_name(+)
   and b.columns(+) like a.columns || '%'
   and b.table_name is null

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值