40、Oracle数据库性能优化与并行处理技术解析

Oracle数据库性能优化与并行处理技术解析

1. Oracle索引选择机制

在Oracle数据库中,单个任务的最快执行方式并非总是最优选择。例如,对于员工表的如下查询:

select employee_name
from EMPLOYEE
where
         credit_rating = 'poor'
and
         amount_due > 1000
and
         state = 'iowa'
and
         job_description like lower('%computer%');

由于复杂的条件和SQL中使用的Oracle扩展,全表扫描可能是最有效的处理方法。不过,这种快速执行可能会以牺牲系统中其他任务为代价,因为缓冲池会被刷新。

一般来说,优化器的类型决定了索引的使用方式。Oracle优化器可以基于规则或基于成本运行。通常,若索引存在,Oracle会智能使用,但也有例外。最显著的例外是带有复杂 where 子句的n路连接,基于规则的优化器会混淆,即使所有表都有适当的外键索引,也会对至少一个表执行全表扫描。解决此问题的唯一方法是使用基于成本的优化器,这需要分析每个表的统计信息。

此外,Oracle仅在索引列以“纯”形式指定时才会使用索引。使用 substr upper lower 等函数会使索引失效。但有一些技巧可以绕过这个障碍,例如以下两个等效的SQL查询:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值