SELECT /*+ rule */
a .table_owner,
a.table_name,
a.index_owner,
a.index_name,
column_name_list,
column_name_list_dup,
dup duplicate_indexes,
i.uniqueness,
i.partitioned,
i.leaf_blocks,
i.distinct_keys,
i.num_rows,
i.clustering_factor
FROM (SELECT table_owner,
table_name,
index_owner,
index_name,
column_name_list_dup,
dup,
MAX(dup) OVER(PARTITION BY table_owner, table_name, index_name) dup_mx
FROM (SELECT table_owner,
table_name,
index_owner,
index_name,
SUBSTR(SYS_CONNECT_BY_PATH(column_name, ','), 2) column_name_list_dup,
dup
FROM (SELECT index_owner,
index_name,
table_owner,
table_name,
column_name,
COUNT(1) OVER(PARTITION BY index_owner, index_name) cnt,
ROW_NUMBER() OVER(PARTITION BY index_owner, index_name ORDER BY column_position) AS seq,
COUNT(1) OVER(PARTITION BY table_owner, table_name, column_name, column_position) AS dup
FROM sys.dba_ind_columns
WHERE (index_owner LIKE 'E%' OR
index_owner LIKE 'TRIAL%' OR
index_owner = 'TEST')
AND index_owner NOT IN ('EXFSYS'))
WHERE dup != 1
START WITH seq = 1
CONNECT BY PRIOR seq + 1 = seq
AND PRIOR index_owner = index_owner
AND PRIOR index_name = index_name)) a,
(SELECT table_owner,
table_name,
index_owner,
index_name,
SUBSTR(SYS_CONNECT_BY_PATH(column_name, ','), 2) column_name_list
FROM (SELECT index_owner,
index_name,
table_owner,
table_name,
column_name,
COUNT(1) OVER(PARTITION BY index_owner, index_name) cnt,
ROW_NUMBER() OVER(PARTITION BY index_owner, index_name ORDER BY column_position) AS seq
FROM sys.dba_ind_columns
WHERE (index_owner LIKE 'E%' OR index_owner LIKE 'TRIAL%' OR
index_owner = 'TEST')
AND index_owner NOT IN ('EXFSYS'))
WHERE seq = cnt
START WITH seq = 1
CONNECT BY PRIOR seq + 1 = seq
AND PRIOR index_owner = index_owner
AND PRIOR index_name = index_name) b,
dba_indexes i
WHERE a.dup = a.dup_mx
AND a.index_owner = b.index_owner
AND a.index_name = b.index_name
AND a.index_owner = i.owner
AND a.index_name = i.index_name
ORDER BY a.table_owner, a.table_name, column_name_list_dup;

Oracle 查询重复索引列的更多相关文章

  1. oracle查询不走索引的一些情况(索引失效)

    Oracle建立索引的目的是为了避免全表扫描,提高查询的效率. 但是有些情况下发现即使建立了索引,但是写出来的查询还是很慢,然后会发现是索引失效导致的,所以需要了解一下那些情况会导致索引失效,即查询不 ...

  2. oracle查询重复数据方法

    SQL重复记录查询方法 2008年08月14日 星期四 21:01 SQL重复记录查询 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peop ...

  3. ORACLE 查询不走索引的原因分析,解决办法通过强制索引或动态执行SQL语句提高查询速度

    (一)索引失效的原因分析: <>或者单独的>,<,(有时会用到,有时不会) 有时间范围查询:oracle 时间条件值范围越大就不走索引 like "%_" ...

  4. oracle避免改变索引列的类型

    当比较不同数据类型的数据时, ORACLE自动对列进行简单的类型转换. 假设 EMPNO是一个数值类型的索引列. SELECT … FROM EMP WHERE EMPNO = ‘123’ 实际上,经 ...

  5. oracle避免在索引列上使用IS NULL和IS NOT NULL

    避免在索引中使用任何可以为空的列,ORACLE将无法使用该索引 .对于单列索引,如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果至少有一个列不为空 ...

  6. oracle避免在索引列上使用NOT

    通常, 我们要避免在索引列上使用NOT, NOT会产生在和在索引列上使用函数相同的 影响. 当ORACLE”遇到”NOT,他就会停止使用索引转而执行全表扫描. 举例: 低效: (这里,不使用索引) S ...

  7. oracle避免在索引列上使用计算

    WHERE子句中,如果索引列是函数的一部分.优化器将不使用索引而使用全表扫描. 举例: 低效: SELECT … FROM DEPT WHERE SAL * 12 > 25000; 高效: SE ...

  8. oracle查询重复的数据

    在oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是oracle中的哪一个数据文件.块.行上.在重复的记录中,可能所有列的内容都相同,但rowi ...

  9. oracle 查询重复数据并且删除, 只保留一条数据

    数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1.首先,查询表中多余的数据,由关键字段(name)来查询. sele ...

随机推荐

  1. 预测python数据分析师的工资

    前两篇博客分别对拉勾中关于 python 数据分析有关的信息进行获取(https://www.cnblogs.com/lyuzt/p/10636501.html)和对获取的数据进行可视化分析(http ...

  2. 从SQL Server CloudDBA 看云数据库智能化

    最近阿里云数据库SQL Server在控制台推出了CloudDBA服务,重点解决数据库性能优化领域问题,帮助客户更好的使用好RDS数据库,这是继MySQL之后第二个关系型数据库提供类似的服务.   数 ...

  3. NFS的安装

    NFS的安装鸟哥地址:http://vbird.dic.ksu.edu.tw/linux_server/0330nfs_2.php 13.2 NFS Server 端的设定 既然要使用 NFS 的话, ...

  4. MVC Scaffolding SmartCode-Engine 更新

    概述 通过扩展visual studio.net scaffolding组件,添加了一套功能完善的代码模板,包括Controller,Model,View,Businessd等各种功能的代码,配合En ...

  5. 深度学习框架Keras介绍及实战

    Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行.Keras 的开发重点是支持快速的实验.能够以最小的时延 ...

  6. 【测试工程师面试】 记录XX银行面试

    LZ在一个18线小城市做测试,近来想走出自己的舒适区,去做一点不一样的测试工作. 18线地区,测试工作并不多.最好的差不多就是LZ目前待着的公司了.遂决定去魔都闯荡几年,对一个在魔都无房无车无户口的人 ...

  7. Spring Boot使用AOP在控制台打印请求、响应信息

    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等. AOP简介 AOP全称Aspect Oriented Programming,面向切面,AOP主要实现的 ...

  8. Java集合类源码解析:ArrayList

    目录 前言 源码解析 基本成员变量 添加元素 查询元素 修改元素 删除元素 为什么用 "transient" 修饰数组变量 总结 前言 今天学习一个Java集合类使用最多的类 Ar ...

  9. 广州.NET微软技术俱乐部休闲活动 - 每周三五晚周日下午爬白云山活动

    基于如下原因: 正如我们在<广州.NET微软技术俱乐部与其他技术群的区别>里面提到的:有人在活动中表达"少了一点自由交流的时间, 我们来自五湖四海, 希望多点时间彼此认识&quo ...

  10. 智能化CRM客户关系管理系统介绍一

    智能化CRM客户关系管理系统介绍一 CRM客户关系管理的定义是:企业为提高核心竞争力,利用相应的信息技术以及互联网技术来协调企业与顾客间在销售.营销和服务上的交互,从而提升其管理方式,向客户提供创新式 ...