`

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

 

分享到:
评论

相关推荐

    Oracle数据库、SQL

    十九、 数据库对象:索引index 41 19.1创建index 41 19.2扫描表的方式 41 19.3索引的结构 41 19.4为什么要使用索引 42 19.5哪些列适合建索引 42 19.6索引的类型 42 19.7哪些写法会导致索引用不了 43 二十、 数据库...

    在Oracle数据库中添加外键约束的方法详解

    使用 参考模式、参考表 和 参考限制 下拉列表来分别选择一个外部索引数据库、表及限制。 要包含栏位到键,只需简单地双击 栏位 栏位或点击 来打开编辑器进行编辑。 删除时 下拉列表定义采取行动的类型。 No Action...

    Oracle数据库设计策略及规范.docx

    不需要为小型数据表()创建索引。 给单个表创建的索引不超过5个,特别是海量交易类表。 索引条件查询结果记录,不超总记录的20%。 不要给固定选项的字段创建独立索引。 如只有'男,女'的性别字段;'是,否'的状态...

    oracle数据库经典题目

    系统权限提供了在Oracle数据库系统范围内执行某种任务的操作能力,而对象权限则是一种赋予用户在指定的数据库对象(如表、视图、过程等) 16. Oralce数据库在进行物理备份有联机备份和脱机备份两种方式可供选择。 ...

    Oracle+10g应用指导与案例精讲

    本书正是根据作者在高校和各种数据库培训班执教多年的教学经验,结合开发应用Oracle数据库的实践经验编撰而成的,书中编排的内容次序非常适合于读者学习和把握Oracle的脉络,书中所选择的问题都是在实际开发应用...

    《Oracle Database 11g & MySQL 5.6开发手册

    6.4.1 Oracle数据库的索引180 6.4.2 MySQL数据库的索引181 6.5 小结182 6.6 习题182 第7章 修改用户和结构185 7.1 用户186 7.1.1 Oracle数据库的用户186 7.1.2 MySQL数据库的用户189 7.2 数据库190 7.3 会话190 ...

    Oracle外键不加索引引起死锁示例

    –创建一个表,此表作为子表 create table fk_t as select *from user_objects; delete from fk_t where object_id is null; commit; –创建一个表,此表作为父表 create table pk_t as select *from user_objects; ...

    Oracle 10g应用指导

    本书正是根据作者在高校和各种数据库培训班执教多年的教学经验,结合开发应用Oracle数据库的实践经验编撰而成的,书中编排的内容次序非常适合于读者学习和把握Oracle的脉络,书中所选择的问题都是在实际开发应用...

    一个oracle客户端(oracle sql handler)

    本软件是一款 Oracle 客户端工具 - 专用于 Oracle 数据库操作: 多线程、多连接、智能/彩色SQL编辑器、中英文双语界面并能切换、支持 PL/SQL、批量SQL运行、高效的块操作、方便的表格操作,不需要安装 Oracle ...

    Oracle建表语句demo(建表语句、索引、序列)

    提供了一个Oracle数据库建表语句的完整示例代码,用于演示如何在Oracle环境中创建一个结构化的数据表。 资源优点: 完整性展示:DEMO提供了从基础建表到复杂约束(如外键、自增主键)等实际生产场景所需的完整SQL...

    数据库技术规范.docx

    目录 数据库技术规范 4 1 建表规范 4 2 使用范围 4 3 概述 4 4 书写 4 5 注释 5 6 Oracle、MySQL、SQL Sever差异 5 7 优化 7 8 索引创建原则 7 9 函数、表达式使用 8 IN/OR子句使用 8 !=或操作符子句使用 8 不要对...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等  语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) ...

    transferdb:Transferdb支持异步数据库模式转换,全量数据导入,导入和增量数据同步功能(Oracle数据库-> MySQL数据库)

    transferdb用于分布式数据库迁移(Oracle数据库-> MySQL数据库),现阶段支持的功能(原transferdb版本被重构): 支持表结构定义转换 考虑到Oracle分区表特殊且MySQL数据库复杂分区可能不支持,分区表统一认为普通...

    表结构设计器_小巧的数据库建模工具

    表结构设计:创建表、字段、主键、外键、索引和注释; b. 表描述:可直接编辑文字描述快速生成表结构,爱用键盘的人会喜欢这个功能; c. 模型图:自动生成模型图;可设计和显示物理/逻辑视图,支持自动布局、平移...

    Oracle SQL Handler (Oracle客户端工具) V3.1

    本工具是用 Java 开发的、专门用于 Oracle 数据库操作的一种图形界面工具: 多线程、多连接、支持 PL/SQL、功能实用、操作简便,能运行于所有平台包括 Windows、Linux 及 Unix,勿需安装 Oracle 客户端,仅 2.8 MB ...

    数据库设计和自动安装工具BDB V2.2(for Oracle/MS SQLServer/MySQL/Access/SQLAnywhere/Sybase)

    BDB是跨数据库平台的数据库设计和自动安装工具、 支持Oracle、MS SQLServer、Access、MySQL、SQLAnyWhere、Sybase数据库。 通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以...

    Navicat Premium操作手册.7z

    3Oracle 外部表访问参数59Oracle 索引组织表59Oracle 索引组织表选项59...数据库链接80Oracle 公用同义词80PostgreSQL 对象80PostgreSQL 模式81PostgreSQL 表81PostgreSQL 表栏位81PostgreSQL 表索引82PostgreSQL 表...

    数据库设计规范(3).doc

    5 3.10 索引(Index) 命名规范 5 3.11 约束(Constraint) 命名规范 5 4 数据模型产出物规范 5 附录A:xml文件使用说明 7 附录B:保留关键字 8 编写目的 本文的目的是提出针对Oracle数据库的设计规范,使利用Oracle...

    数据库设计准则及方法论.docx

    逻辑架构 实现技术 对称多处理器(SMP) 基本所有商业数据库都支持 Sharing Nothing架构(多分区数据库) DB2 DPF 、TeraData、Greenplum、Netezza Share Disk架构(共享磁盘) DB2 pureScale、Oracle RAC Sharing ...

    sqldebug--通用数据库GUI

    SQLDebug是八九软件开发的一个免费的智能查询分析器,它支持Access、MSSQL、MYSQL和ORACLE数据库,它的特性有: SQL语法快速自动完成 能根据数据库类型自动补全数据库保留字、表名、字段名、函数等。 强大的脚本...

Global site tag (gtag.js) - Google Analytics