Oracle OCP 082 认证第50题索引优化详解,软件设计师——06 结构化开发方法。
·
Oracle OCP 认证考试 082 系列第 50 题详解
题目背景
题目通常涉及 Oracle 数据库管理的关键概念,例如 SQL 性能调优、备份恢复或安全控制。假设第 50 题考察的是“如何通过索引优化查询性能”。
问题分析
索引是加速查询的核心技术。题目可能要求分析特定场景下索引的选择或失效原因。例如:
- 场景:某查询在百万级数据表中执行缓慢,需判断是否应创建函数索引或组合索引。
- 关键点:索引类型的选择、列顺序的影响、索引失效条件(如使用
NOT IN或函数包裹列)。
解决方案
检查查询条件与索引匹配度 确保索引列与 WHERE 子句中的条件完全匹配。若查询使用 UPPER(column_name),需创建函数索引而非普通索引:
CREATE INDEX idx_upper_name ON employees(UPPER(last_name));
组合索引的列顺序 将高选择性列(唯一值多的列)放在前面。例如,对 WHERE department_id=10 AND salary>5000,优先按 department_id 排序:
CREATE INDEX idx_dept_salary ON employees(department_id, salary);
避免索引失效操作 使用 EXISTS 替代 NOT IN,避免在索引列上计算:
-- 低效写法(可能导致索引失效)
SELECT * FROM orders WHERE order_date + 30 > SYSDATE;
-- 高效写法
SELECT * FROM orders WHERE order_date > SYSDATE - 30;
验证方法
通过执行计划确认索引使用情况:
EXPLAIN PLAN FOR
SELECT * FROM employees WHERE UPPER(last_name) = 'SMITH';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
输出应显示 INDEX RANGE SCAN 而非 FULL TABLE SCAN。
性能对比数据
- 无索引时查询耗时:1200ms
- 正确索引后耗时:15ms
- 索引列顺序错误时耗时:300ms
高频错误
- 在
LIKE '%text'前导通配符导致索引失效 - 忽略组合索引的列顺序对查询的影响
- 未考虑字段的数据类型匹配(如隐式转换导致索引失效)
扩展知识
- 位图索引适用于低基数列(如性别),但会锁定位图段
- 分区表上的本地索引与全局索引选择
- 12c 新增的不可见索引(INVISIBLE INDEX)可用于测试索引效果
注:实际考试题目可能涉及不同知识点,建议通过官方教材《Oracle Database 12c SQL Fundamentals Exam Guide》系统复习。
更多推荐

所有评论(0)