Oracle自己写的找出索引体积比表大的索引
Oracle自己写的找出索引体积比表大的索引
排除掉默认的用户:
set line 500 col index_name for a35 col table_name for a35 with d as (select di.owner, di.index_name, ds.bytes idx_mb, di.table_name from dba_segments ds, dba_indexes di where ds.segment_name = di.index_name and ds.owner = di.owner and ds.owner not in ('ANONYMOUS', 'ANYNAME', 'APEX_030200', 'AURORA$JIS$UTILITY$', 'AURORA$ORB$UNAUTHENTICATED', 'APPQOSSYS', 'CTXSYS', 'DBSNMP', 'DIP', 'DMSYS', 'DVF', 'DVSYS', 'EXFSYS', 'FLOWS_FILES', 'LBACSYS', 'MDDATA', 'MDSYS', 'MGMT_VIEW', 'OAS_PUBLIC', 'ODM', 'ODM_MTR', 'ORACLE_OCM', 'ORDPLUGINS', 'ORDSYS', 'OSE$HTTP$ADMIN', 'OUTLN', 'OLAPSYS', 'PERFSTAT', 'REPADMIN', 'RMAN', 'SCOTT', 'SI_INFORMTN_SCHEMA', 'SYS', 'SYSMAN', 'SYSTEM', 'SPATIAL_CSW_ADMIN_USR', 'SPATIAL_WFS_ADMIN_USR', 'TRACESVR', 'TSMSYS', 'WEBSYS', 'WK_TEST', 'WKPROXY', 'WKSYS', 'WKSYS', 'WKUSER', 'WMSYS', 'XDB', 'XS$NULL', 'ORDDATA', 'OWBSYS', 'OGG', 'OWBSYS_AUDIT', 'IX', 'SH', 'BI', 'OE', 'APEX_PUBLIC_USER', 'HR', 'PM', 'BJHL', 'GSMCATUSER', 'REMOTE_SCHEDULER_AGENT', 'SYSRAC', 'SYSBACKUP', 'GSMADMIN_INTERNAL', 'SYS$UMF', 'GSMUSER', 'SYSDG', 'AUDSYS', 'OJVMSYS', 'APEX_050000', 'GGSYS', 'SYSKM', 'DBSFWUSER')), t as (select owner, segment_name, sum(bytes) bytes from dba_segments where owner not in ('ANONYMOUS', 'ANYNAME', 'APEX_030200', 'AURORA$JIS$UTILITY$', 'AURORA$ORB$UNAUTHENTICATED', 'APPQOSSYS', 'CTXSYS', 'DBSNMP', 'DIP', 'DMSYS', 'DVF', 'DVSYS', 'EXFSYS', 'FLOWS_FILES', 'LBACSYS', 'MDDATA', 'MDSYS', 'MGMT_VIEW', 'OAS_PUBLIC', 'ODM', 'ODM_MTR', 'ORACLE_OCM', 'ORDPLUGINS', 'ORDSYS', 'OSE$HTTP$ADMIN', 'OUTLN', 'OLAPSYS', 'PERFSTAT', 'REPADMIN', 'RMAN', 'SCOTT', 'SI_INFORMTN_SCHEMA', 'SYS', 'SYSMAN', 'SYSTEM', 'SPATIAL_CSW_ADMIN_USR', 'SPATIAL_WFS_ADMIN_USR', 'TRACESVR', 'TSMSYS', 'WEBSYS', 'WK_TEST', 'WKPROXY', 'WKSYS', 'WKSYS', 'WKUSER', 'WMSYS', 'XDB', 'XS$NULL', 'ORDDATA', 'OWBSYS', 'OGG', 'OWBSYS_AUDIT', 'IX', 'SH', 'BI', 'OE', 'APEX_PUBLIC_USER', 'HR', 'PM', 'BJHL', 'GSMCATUSER', 'REMOTE_SCHEDULER_AGENT', 'SYSRAC', 'SYSBACKUP', 'GSMADMIN_INTERNAL', 'SYS$UMF', 'GSMUSER', 'SYSDG', 'AUDSYS', 'OJVMSYS', 'APEX_050000', 'GGSYS', 'SYSKM', 'DBSFWUSER') group by owner, segment_name) select d.owner, d.index_name, d.idx_mb / 1024 / 1024 idx_mb, d.table_name, t.bytes / 1024 / 1024 tab_mb from d, t where d.table_name = t.segment_name and d.idx_mb > t.bytes and d.owner = t.owner;
我在我管理的数据中发现,挺多的索引比表大的情况。
后续按照计划重建后,发现还是部分存在。
这些索引都是将表的全部字段建成的复合索引,真奇葩。
不然至少也是90%的字段建成的符合索引,哎。
分类:
Oracle
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?