概述
数据库的调优包括多个层面,如:操作系统调优、数据合理有效的存储、数据库服务器参数调整、应用层调优等
对应用开发层的SQL的调优,是最直接有效的手段,可解决80%以上的数据库访问效率问题
本次培训讲述一些书写高效SQL语句常用规则
[color=blue]规则[/color]:用EXPLAIN PLAN 分析SQL语句
[list]
[*]显示oracle的优化器为sql语句选择的执行计划.
[*]可以在不执行SQL的情况下分析语句.
[*]通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全[*]表扫描)以及使用到的索引名称.
[*]通过分析执行计划,可以发现并避免:
[1]不必要的全表扫描
[2]选择性不高的范围搜索
[3]错误的连接次序
[4]过迟的条件过滤操作
[/list]
[color=brown]举例[/color]:SELECT * FROM dept, emp WHERE emp.deptno = dept.deptno
Execution Plan :
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 NESTED LOOPS
2 1 TABLE ACCESS (FULL) OF 'EMP‘
3 1 TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'
[u]4 3 INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE) [/u]
[list]
[*]在多数情况下,通过索引提高查询效率是非常有效的办法
[*]索引一定要建的合理,并且被正确的使用
[*]选择合适的索引列规则:
[1] 选择在where子句中常用的查询列做索引字段
[2] 选择常用来关联表的字段做索引字段
[3] 对普通的B-TREE索引,应该选择具有选择性高(high selectivity)的字段做索引字段,若字段的不同取值很少,即选择性低,则适合建位映射索引
[4] 不要在经常被修改的字段上建索引。索引会降低update ,insert ,delete等操作的效率。
[/list]
数据库的调优包括多个层面,如:操作系统调优、数据合理有效的存储、数据库服务器参数调整、应用层调优等
对应用开发层的SQL的调优,是最直接有效的手段,可解决80%以上的数据库访问效率问题
本次培训讲述一些书写高效SQL语句常用规则
[color=blue]规则[/color]:用EXPLAIN PLAN 分析SQL语句
[list]
[*]显示oracle的优化器为sql语句选择的执行计划.
[*]可以在不执行SQL的情况下分析语句.
[*]通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全[*]表扫描)以及使用到的索引名称.
[*]通过分析执行计划,可以发现并避免:
[1]不必要的全表扫描
[2]选择性不高的范围搜索
[3]错误的连接次序
[4]过迟的条件过滤操作
[/list]
[color=brown]举例[/color]:SELECT * FROM dept, emp WHERE emp.deptno = dept.deptno
Execution Plan :
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 NESTED LOOPS
2 1 TABLE ACCESS (FULL) OF 'EMP‘
3 1 TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'
[u]4 3 INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE) [/u]
[list]
[*]在多数情况下,通过索引提高查询效率是非常有效的办法
[*]索引一定要建的合理,并且被正确的使用
[*]选择合适的索引列规则:
[1] 选择在where子句中常用的查询列做索引字段
[2] 选择常用来关联表的字段做索引字段
[3] 对普通的B-TREE索引,应该选择具有选择性高(high selectivity)的字段做索引字段,若字段的不同取值很少,即选择性低,则适合建位映射索引
[4] 不要在经常被修改的字段上建索引。索引会降低update ,insert ,delete等操作的效率。
[/list]