You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle数据库性能调优:查询缺失索引的DMV语句咨询

Oracle提供了和SQL Server DMV功能类似的动态性能视图,可用于查询优化器识别出的缺失索引,以下是可直接使用的查询脚本:

  • 执行以下查询需要拥有DBA权限或SELECT_CATALOG_ROLE角色
  • 视图返回的是优化器基于历史SQL执行生成的建议,不要直接批量创建所有建议索引,需要结合业务读写比例、索引维护成本评估后再操作
  • 建议优先选择预估收益高、对应SQL执行频次高的建议项验证生效
常用缺失索引查询脚本(直接生成创建语句)
SELECT
  p.object_owner AS schema_name,
  p.object_name AS table_name,
  ROUND(s.perf_gain,2) AS estimated_perf_improve_pct,
  s.executions AS sql_exec_count,
  'CREATE INDEX IX_' || REPLACE(p.object_name, '$', '_') || '_' || 
  REGEXP_REPLACE(REPLACE(REPLACE(p.predicate, ')', ''), '(', ''), '[^a-zA-Z0-9_]', '_') ||
  ' ON ' || p.object_owner || '.' || p.object_name || '(' || 
  REPLACE(TRANSLATE(p.predicate, '()= ''', ''), 'AND', ',') || ')' AS create_index_statement
FROM
  v$sql_plan_mis p
  JOIN v$sql s ON p.sql_id = s.sql_id
WHERE
  p.operation = 'TABLE ACCESS'
  AND p.options = 'FULL'
  AND p.object_owner NOT IN ('SYS', 'SYSTEM', 'SYSMAN', 'DBSNMP')
ORDER BY
  perf_gain DESC,
  s.executions DESC
FETCH FIRST 25 ROWS ONLY;

该脚本逻辑和你提供的SQL Server缺失索引查询逻辑对齐,默认返回前25条预估收益最高的索引建议,其中estimated_perf_improve_pct字段对应SQL Server脚本的Avg_Estimated_Impact,用于衡量索引创建后对应SQL的预估性能提升幅度。

自动SQL调优任务生成的高优先级索引建议(更精准)

如果你的Oracle实例开启了默认的自动SQL调优任务,也可以直接查询官方调优任务输出的高可信度索引建议:

SELECT
  af.attr1 AS table_name,
  af.attr2 AS index_columns,
  ROUND(af.benefit,2) AS estimated_benefit,
  af.recommendation AS advice
FROM
  dba_advisor_findings af
  JOIN dba_advisor_tasks at ON af.task_id = at.task_id
WHERE
  at.task_name = 'SYS_AUTO_SQL_TUNING_TASK'
  AND af.type = 'INDEX'
ORDER BY
  af.benefit DESC;

内容的提问来源于stack exchange,提问作者mattsmith5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:15:03