小编给大家分享一下Oracle中如何找出有哪些索引从来没有被使用过,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

数据库经过N手后,索引乱建,下面的SQL就找出一点时间范围内哪些索引从来没被使用过,亲测好用,注意一点,生成的SQL你要是执行了,就会从脚本中消失了,

SELECTX.OWNER,X.TABLE_NAME,X.INDEX_NAME,C.COLUMN_POSITION,C.COLUMN_NAME,S.BYTES/1024/1024M,q'[selectcount(*),count(distinct]'||C.COLUMN_NAME||q'[)from]'||X.OWNER||'.'||X.TABLE_NAME||q'[;]'ASQUERY_QFROM(SELECTA.OWNER,A.TABLE_NAME,A.INDEX_NAMEFROMDBA_INDEXESAWHEREA.OWNERIN(SELECTUSERNAMEFROMDBA_USERSWHERECREATED>DATE'2018-10-30')AND(A.OWNER,A.INDEX_NAME)NOTIN(SELECT/*+unnest*/B.OBJECT_OWNER,B.OBJECT_NAMEFROMGV$SQLA,GV$SQL_PLANBWHEREA.SQL_ID=B.SQL_IDANDA.CHILD_NUMBER=B.CHILD_NUMBERANDB.OBJECT_OWNERIN(SELECTUSERNAMEFROMDBA_USERSWHERECREATED>DATE'2018-10-30')ANDB.OBJECT_TYPELIKE'%INDEX%'ANDB.TIMESTAMP>DATE'2018-10-10')ANDA.TABLE_NAMENOTLIKE'SYS%'ANDA.UNIQUENESS<>'UNIQUE')XINNERJOINDBA_IND_COLUMNSCONC.INDEX_OWNER=X.OWNERANDC.INDEX_NAME=X.INDEX_NAMEANDC.TABLE_NAME=X.TABLE_NAMEINNERJOINDBA_SEGMENTSSONS.SEGMENT_NAME=C.TABLE_NAMEANDS.OWNER=C.INDEX_OWNERANDS.BYTES/1024/1024>10ORDERBY1,2,3,4;

以上是“Oracle中如何找出有哪些索引从来没有被使用过”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!