一、SQL优化简介
二、SQL优化技巧,用于缩短执行查询所需要的时间
三、了解ORACLE优化器
四、如何比较查询的成本
五、如何将提示传给优化器
六、一些附加的优化工具
一、SQL优化简介
宗旨:我们不但要写出能够执行的SQL语句,更要写出能够执行优良的SQL语句。
1.使用where 子句过滤行:
where子句中应该避免使用函数,后果是增加了执行时间。
2.使用表的链接,而不是多个查询:
查询中必须选择连接顺序,将行较少的表连接到后面。在查询中避免使用视图。
3.执行连接时使用完全限定的列引用。
在多表查询中,每列包含表的别名,这样数据库就不需要去搜索每列的分属的表了,加快
了查询速度。
列包含表的别名,称完全限定列的引用。
4.使用CASE表达式,而不是多个查询。
5.添加表的索引
一条成功的经验是:但单个查询检索的行数不大于表总行数的10%时,建立索引是有用的。
6.使用where子句,而不是having子句
where子句用于过滤行
having子句用于过滤组
先使用where子句过滤出要分组的行,group by 再来分组。
而不是使用group by 先分组,having再来过滤分组。
两种都能执行,但前者效率更高。
7.使用union all 而不是union
union all 找出所有的行
union 找出表里不重复的行,这需要计算和比较,比较耗时。
8.使用exists 而不是in 在子查询中,exists比in所提供的性能要好的多,尽量使用exists,而 不使用in.
9.使用exists,而不是distinct .
distinct在禁止重复行之前要排序检索到行。
10.使用绑定变量
&变量
11. SQL优化工具:autotrace
SQL优化工具autotrace是SQL*PLUS提供的一个可以跟踪SQL的执行计划,收集统计信息的工具
autotrace工具的启用:
1) 执行脚本utlxplan,创建plan_table表
unix/linux环境: @?\rdbms\admin\utlxplan.sql
windows环境: @d:/oracle/product/database/RDBMS/admin/utlxplan.sql
2)目的是共享plan_table表,创建公共同义词,并授权给public
create public synonym plan_table for plan_table;
grant all on plan_table to public;
3)创建plustrace角色,运行脚本plustrce.sql
@?\sqlplus\admin\plustrce.sql
执行该脚本后,将自动创建用户plustrace及该角色的相关权限。
4) 手工授权角色plustrace给public,所有的用户都能是使用autotrace功能了。
5) 开启/关闭autotrace功能
set autotrace on/off
6) 开启查看底层基础表功能
set autotrace trace explain
set autotrace off(关闭)
阅读(735) | 评论(0) | 转发(0) |