`

查找没有索引的外键

阅读更多
http://asktom.oracle.com/tkyte/unindex/unindex.sql



column columns format a20 word_wrapped

column table_name format a30 word_wrapped

select decode( b.table_name, NULL, '****', 'ok' ) Status, 

           a.table_name, a.columns, b.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 || '%'

/


分享到:
评论

相关推荐

    ARTools.Oracle抽取指定库的主键、外键、索引

    另附以下功能 * 生成目录树 * 生成迁移脚本 * 查找所有System.out,.err * 批量替换多关键字 详情见 http://blog.csdn.net/amosryan/article/details/6684465

    MySQLSQL高级特性字段约束-索引-视图-外键学习实践.rar

    2. **哈希索引**:主要用于内存中的MyISAM表,提供快速的等值查找,但不支持范围查询。 3. **全文索引**:用于文本搜索,提供更复杂的模糊匹配功能。 4. **空间索引**:处理多维数据,如地理坐标,常用于GIS应用。 5...

    MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引

    索引(Index)是数据库管理系统中的一个重要组成部分,用于快速查找记录。MySQL支持多种类型的索引,包括B-Tree、Hash、R-Tree和Full-text。B-Tree索引是最常见的,适用于大多数情况;Hash索引适用于等值查询;R-...

    MySql练习4:创建学生表和成绩表索引并查看索引.zip

    对于成绩表,假设名为`grades`,包含`student_id`(外键)和`score`字段,我们可能在`student_id`上创建索引来加速按学生ID查找成绩的操作。 3. **索引类型**: - **唯一索引(UNIQUE)**:确保索引列中的每个值...

    数据库索引技术ppt

    在关系数据库中,常见的索引类型有唯一索引、主键索引、外键索引和非唯一索引等。 接下来,我们深入理解“B+树索引”。B+树是一种自平衡的树数据结构,广泛应用于数据库索引。它的每个节点可以包含多个关键字,每个...

    SQL的主键和外键的作用.doc

    3. 外键的值可以是NULL,表示该记录与关联表没有对应关系,也可以是关联表主键中的任何值。创建外键约束的SQL语句如:`FOREIGN KEY (字段名) REFERENCES 关联的表名(关联的字段名)`。 4. 外键约束还可以指定级联操作...

    SQL中的主键和外键.doc

    - **聚集索引**:存储数据的物理顺序与索引顺序相同,提高了按索引查找的效率。 - **非聚集索引**:索引项中只包含索引值,不包含数据本身,通过索引指向数据所在的页,适用于大量随机查询。 #### 三、数据库中主键...

    oracle约束和索引笔记

    - **B树索引(B-Tree Index)**: 最常见的索引类型,适用于等值查询,根据索引键的排序顺序查找数据。 - **位图索引(Bitmap Index)**: 适合于在含有大量重复值的列上,尤其是在进行多列组合查询时,将多个位图...

    MySQL Innodb 索引原理详解

    这种方式减少了索引的空间占用,但需要额外的二次查找来获取完整的记录。 ##### 2.3 聚簇索引与非聚簇索引 - **聚簇索引**:主键索引即是聚簇索引,它决定了表中数据的物理存储顺序。 - **非聚簇索引**:非主键...

    索引及其应用PPT学习教案.pptx

    - 外键:外键列可根据需要创建索引,以提高关联查询的效率。 - 经常查询的列:频繁出现在查询条件中的列应考虑建立索引。 - 少用和重复值多的列:查询中很少涉及且重复值多的列不建议建立索引,因为索引效果有限...

    数据库索引

    3. **外键列**:在外键上创建索引有助于加快连接操作。 4. **范围查询列**:在经常进行范围查询的列上创建索引。 5. **排序列**:在经常需要排序的列上创建索引。 6. **WHERE子句列**:在经常出现在WHERE子句中的列...

    SQL Server 索引结构及其使用

    5. 外键列和主键列通常建议设置索引,主键默认创建聚集索引,但是否合适需根据业务需求判断。 6. 如果索引列经常被修改,非聚集索引可能是更好的选择,因为修改索引不会影响数据行的物理顺序。 然而,在实践中,...

    键、索引、约束及其区别

    通过查找索引,可以迅速找到匹配的数据行。 **1.3 索引的存储** 索引是一个单独的、物理的数据库结构,它包含了表中一列或多列的值以及指向表中实际数据行的逻辑指针。因此,索引需要占用额外的存储空间。 **1.4 ...

    SQL优化-索引

    例如,如果主键是自动递增的ID,且查询很少基于这个ID,那么建立聚集索引就显得没有必要,因为它可能导致空间的浪费。相反,更常用于查询的列,尤其是那些有大量不同值的列,更适合作为聚集索引。 总结来说,正确地...

    Mysql索引优化解决方案.doc

    索引的使用场景有很多,在很多情况下都需要创建索引,例如,主键自动建立唯一索引,频繁作为查询条件的字段应该创建索引,查询中与其它表关联的字段,外键关系建立索引,多字段查询下倾向创建组合索引,查询中排序的...

    SQL Server 2000索引结构及使用方法

    索引是一种特殊的目录,可以帮助我们快速地查找数据。SQL Server 2000 提供了两种索引:聚集索引(clustered index)和非聚集索引(nonclustered index)。 聚集索引是一种按照一定规则排列的目录,正文内容本身...

Global site tag (gtag.js) - Google Analytics