`
zybing
  • 浏览: 457401 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【技术】为没有索引的外键创建索引脚本

阅读更多

 

/* Formatted on 2011/05/04 15:11 (Formatter Plus v4.8.7) */
SELECT    'create index IX_'
       || table_name
       || '_'
       || cname1
       || NVL2 (cname2, '_' || cname2, NULL)
       || NVL2 (cname3, '_' || cname3, NULL)
       || NVL2 (cname4, '_' || cname4, NULL)
       || NVL2 (cname5, '_' || cname5, NULL)
       || NVL2 (cname6, '_' || cname6, NULL)
       || NVL2 (cname7, '_' || cname7, NULL)
       || NVL2 (cname8, '_' || cname8, NULL)
       || ' ON '
       || table_name
       || '('
       || cname1
       || NVL2 (cname2, ',' || cname2, NULL)
       || NVL2 (cname3, ',' || cname3, NULL)
       || NVL2 (cname4, ',' || cname4, NULL)
       || NVL2 (cname5, ',' || cname5, NULL)
       || NVL2 (cname6, ',' || cname6, NULL)
       || NVL2 (cname7, ',' || cname7, NULL)
       || NVL2 (cname8, ',' || cname8, NULL)
       || ');' COLUMNS
  FROM (SELECT   b.table_name, b.constraint_name,
                 MAX (DECODE (POSITION, 1, column_name, NULL)) cname1,
                 MAX (DECODE (POSITION, 2, column_name, NULL)) cname2,
                 MAX (DECODE (POSITION, 3, column_name, NULL)) cname3,
                 MAX (DECODE (POSITION, 4, column_name, NULL)) cname4,
                 MAX (DECODE (POSITION, 5, column_name, NULL)) cname5,
                 MAX (DECODE (POSITION, 6, column_name, NULL)) cname6,
                 MAX (DECODE (POSITION, 7, column_name, NULL)) cname7,
                 MAX (DECODE (POSITION, 8, column_name, NULL)) cname8,
                 COUNT (*) col_cnt
            FROM (SELECT SUBSTR (table_name, 1, 30) table_name,
                         SUBSTR (constraint_name, 1, 30) constraint_name,
                         SUBSTR (column_name, 1, 30) column_name, POSITION
                    FROM user_cons_columns) a,
                 user_constraints b
           WHERE a.constraint_name = b.constraint_name
             AND b.constraint_type = 'R'
        GROUP BY b.table_name, b.constraint_name) cons
 WHERE col_cnt >
          ALL (SELECT   COUNT (*)
                   FROM user_ind_columns i
                  WHERE i.table_name = cons.table_name
                    AND i.column_name IN
                           (cname1,
                            cname2,
                            cname3,
                            cname4,
                            cname5,
                            cname6,
                            cname7,
                            cname8
                           )
                    AND i.column_position <= cons.col_cnt
               GROUP BY i.index_name)
/
 

 

 

 

 

 

分享到:
评论

相关推荐

    删除数据库的所有表、存储过程、主键、外键、索引等

    5. 索引:索引是数据库为了加速查询而创建的一种数据结构。它使得数据检索更快,但会占用额外的存储空间,并可能影响到数据插入和更新的速度。 删除这些元素的步骤通常是这样的: 1. 删除存储过程:在大多数数据库...

    Oracle中检查外键是否有索引的SQL脚本分享

    然而,为了提高查询性能,外键列通常需要创建索引。这篇分享主要关注如何通过SQL脚本来检查Oracle中的外键是否已经创建了索引。 首先,我们来理解给出的第一个SQL脚本,它用于查询所有用户下的外键是否有索引。脚本...

    删除并重新创建SQL Server中所有外键SQL脚本

    首先,理解T-SQL(Transact-SQL)是SQL Server的扩展,它提供了更多的功能和语法,包括创建、修改和删除数据库对象,如表、索引和外键。在SQL Server中,我们使用ALTER TABLE或DROP CONSTRAINT语句来操作外键。 ...

    PATSTAT-PostgreSQL:R脚本的集合,可将PATSTAT(2018年秋季版)导入PostgreSQL数据库,设置索引和外键,并创建一些摘要统计信息和辅助变量

    一组R脚本,用于将PATSTAT(秋季版2018)导入PostgreSQL数据库,设置索引和外键,并创建一些摘要统计信息和辅助变量。 这个怎么运作: 首先,设置一个PosttGreSQL服务器() 在相应的R脚本的文件夹中解压缩14个...

    查看数据库中已有触发器、约束和索引并获得相应脚本

    本文将详细介绍如何通过SQL语句查询数据库中的触发器、约束和索引,并获取相应的创建脚本。这对于日常的数据库管理和开发工作都非常有帮助。 #### 一、触发器 触发器是一种特殊类型的存储过程,它定义了一组SQL...

    PetShop 5.0 数据库 Database 创建 脚本

    5. 索引的创建:为了提高数据检索速度,数据库脚本会为频繁查询的列创建索引。例如,"Products"表的"ProductName"和"Price"列可能有索引,使得按名称或价格搜索商品时速度更快。 6. 初始化数据:除了结构定义,脚本...

    oracle初学者必备-scott用户脚本创建及表结构及函数练习实例.pdf

    总之,Oracle初学者通过实践Scott用户脚本创建和操作表结构,可以快速掌握Oracle数据库的核心概念和基本操作,为后续的数据库管理和开发工作打下坚实基础。在学习过程中,不断练习和实验是提升技能的关键。

    Oracle 常用脚本.zip

    2. 表与索引脚本:这些脚本用于定义数据库的结构,如创建表格、设置列类型、主键和外键约束、创建索引以优化查询性能。 3. 数据导入导出脚本:通过SQL*Loader或者Data Pump工具,可以编写脚本实现大量数据的快速...

    数据库建库脚本.zip

    5. **索引**:为了加速查询,可以为经常用于查询的字段创建索引。索引类型包括B树索引、哈希索引、全文索引等,具体选择取决于查询模式。 6. **存储过程和触发器**:存储过程是一组预编译的SQL语句,可以封装复杂的...

    查看数据库脚本

    通过为表的特定列创建索引,可以加速数据检索。查看索引脚本,我们可以了解哪些列被索引,以及索引的类型(如唯一索引、全文索引等)。 3. **约束**:约束是确保数据完整性的规则。常见的约束有非空约束、唯一约束...

    SQLSERVER如何使用脚本生成表

    4. **右键单击表**:选择你需要生成脚本的表,然后右键单击它,在弹出的菜单中选择“脚本表为” &gt; “创建到” &gt; “新查询编辑器窗口”。 5. **查看脚本**:此时,一个新窗口将打开,显示用于创建该表的SQL脚本。这...

    ORACLE_DBA常用脚本.ppt

    例如,如果脚本提示"Changing data in table ITEMS will lock table ITEM_CATEGORIES",那么可以为相关列创建索引来解决。 其次,索引检查也是DBA的重要工作之一。索引可以显著提高查询速度,但过多或不必要的索引...

    淘淘商城mysql脚本

    6. 索引创建:CREATE INDEX语句用于为表的某些字段创建索引,加速查询速度。 7. 视图与触发器:可能还包含视图(VIEW)的创建,提供更方便的查询接口,以及触发器(TRIGGER)的定义,实现特定条件下的自动操作。 ...

    标准库建库脚本

    例如,为`username`创建唯一索引: ```sql ALTER TABLE 用户表 ADD UNIQUE INDEX idx_username (username); ``` 此外,为了确保数据一致性,我们还可以设置约束,如非空约束、唯一约束或外键约束。例如,添加一个...

    PowerDesigner(CDM—PDM—SQL脚本的转换流程

    - 定制SQL脚本的格式和内容(如是否包含注释、是否创建索引等)。 - 导出SQL脚本文件,然后在目标数据库中执行。 #### 4. 实战操作示例 接下来,我们将通过一个简单的示例来演示如何使用PowerDesigner完成从CDM...

    JavaWeb信息管理系统包含数据库脚本文件.zip

    3. **索引脚本**:为了提高查询性能,数据库管理员会创建索引,特别是在经常用于搜索或排序的字段上。 4. **初始数据脚本**:在系统启动时,可能需要填充一些基础数据,如预设的用户、角色、权限等。 5. **触发器...

    SQLSERVER生成数据脚本软件.

    2. **表结构脚本**:表结构脚本包含创建表的DDL(Data Definition Language)命令,包括字段名、数据类型、主键、外键、索引等信息。生成表结构脚本有助于在新环境中快速重建相同的数据库结构。 3. **表数据脚本**...

    框架使用到的初始化脚本

    开发者可以使用这个文件来理解和重构数据库结构,或者将其转换为具体的SQL脚本以创建数据库表。 2. **init_table_mysql.sql**:这是一个SQL脚本,其内容主要是创建MySQL数据库中的表格。在Spring MVC应用启动前,...

    网狐6602数据库脚本

    1. **创建脚本**:用于建立数据库表结构,包括定义字段、数据类型、主键、外键等关系,确保数据的有效性和完整性。 2. **插入脚本**:用于将初始数据填充到数据库中,这在系统初始化或测试环境中特别有用。 3. **...

    全国高校数据库脚本MSSql

    2. **索引**:为了提高查询性能,脚本可能包含了创建索引的命令,尤其针对经常进行搜索或连接操作的字段。 3. **存储过程和函数**:可能包含了一系列预编译的SQL代码块,用于执行复杂的业务逻辑,如批量插入、更新...

Global site tag (gtag.js) - Google Analytics