Oracle SQL性能优化总结

Oracle数据库技术的两大基石是:索引和表连接

[b]1.[/b]能不写子查询,尽量不写子查询,而是直接编写多表连接操作

[b]2.[/b]到底是使用in还是exists:
in操作的原理是先进行子查询操作,再进行主查询操作;exists操作的原理是先进行主查询操作,再到子查询中进行过滤。
Oracle里面只要该技术依然存在,就说明他一定有应用场景,否则就该直接淘汰了。in和exists依然存在,说明他们一定有不同的应用场景,in和exists使用的一般性建议:
(1)如果限制性强的条件在子查询,则使用in操作
(2)如果限制性强的条件在主查询,则使用exists操作

[b]3.[/b]尽量将限制性最强的表作为驱动表

[b]4.[/b]如果两个结果集之间根本没有交集,当然使用UNION ALL而不是UNION

[b]导致数据库性能问题的最常见的两类原因:[/b]

(1)不合理的大表全表扫描
在IT系统中,大量质量低下的SQL语句,特别是大量不合理的大表全表扫描是导致性能问题的首要因素。导致该问题的根本原因包括缺乏索引、索引被抑止、表连接技术使用不当、表连接和索引结合不好、优化器问题、统计信息未及时采集和更新、数据库设计问题、事务设计不合理等诸多因素。

(2)语句共享性不好
在联机交易系统中,由于应用程序没有合理使用绑定变量,导致大量重复的语句解析(Parse)操作,浪费了大量内存空间(shared pool),使CPU利用率居高不下,更导致系统整体扩展能力下降,影响了系统整体生命周期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值