基于CBO的SQL优化
基于CBO的SQL优化 应用程序的优化分为很多方面,如硬件,数据库配置,网络宽带等等。这里我们只讨论,如何基于ORACLE 10G数据库(使用CBO优化器),写出最有效率的SQL语句。
CBO介绍:
基于成本的优化器(Cost-Based Optimization)
★计算各种可能的“执行计划”的Cost,从中选择Cost最低的执行方案,作为实际运行方案。
CBO限制:当检索的表达到一定数量之后,就不会有以上特点。
【基于CBO的SQL优化】RBO介绍:
基于规则的优化器(Rule-Based Optimization)
★只认规则,对数据不敏感,在Oracle 10g中已被完全取代。
SQL语句优化有以下几个要点:
1.减少对表的检索
2.使用索引
3.减少解析
常用工具:
1.Explain Plan
2.SQL Trace
3.tkprof
1.减少对表的检索
- 子查询
- 去除不必要的条件和数据源
- EXISTS 和 IN,谁更合适?
- 避免使用函数处理索引列
- 避免对索引列计算
- 使用基于函数的索引
- 使用HINT
- 索引也是需要开销的,所以并不一定要使用索引。
- 对于数据量较大的表,尽量 使用索引。
- 程序在UT阶段由于没有实际环境,所以不要使用HINT。
- 共享池(Shared Pool)
对于已经运用过的SQL语句,Oracle数据库会将信息存到共享池中,再执行相同的SQL语句时就可以不用再解析了。
原则上,Oracle数据库不会去利用不一样的SQL,哪怕仅仅是多出一个空格,或者大小写的区别。所以为了提高SQL的再利用率,要彻底的遵守编码规范。
- 使用动态SQL
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量