技术开发 频道

SQL语句性能调整之ORACLE的执行计划

  可选择性(selectivity):

  比较一下列中唯一键的数量和表中的行数,就可以判断该列的可选择性。如果该列的”唯一键的数量/表中的行数”的比值越接近1,则该列的可选择性越高,该列就越适合创建索引,同样索引的可选择性也越高。在可选择性高的列上进行查询时,返回的数据就较少,比较适合使用索引查询。

  有了这些背景知识后就开始介绍执行计划。为了执行语句,Oracle可能必须实现许多步骤。这些步骤中的每一步可能是从数据库中物理检索数据行,或者用某种方法准备数据行,供发出语句的用户使用。Oracle用来执行语句的这些步骤的组合被称之为执行计划。执行计划是SQL优化中最为复杂也是最为关键的部分,只有知道了ORACLE在内部到底是如何执行该SQL语句后,我们才能知道优化器选择的执行计划是否为最优的。执行计划对于DBA来说,就象财务报表对于财务人员一样重要。所以我们面临的问题主要是:如何得到执行计划;如何分析执行计划,从而找出影响性能的主要问题。下面先从分析树型执行计划开始介绍,然后介绍如何得到执行计划,再介绍如何分析执行计划。

  举例:

  这个例子显示关于下面SQL语句的执行计划。

  SELECT ename, job, sal, dname

  FROM emp, dept

  WHERE emp.deptno = derpt.deptno

  AND NOT EXISTS

  ( SELECT *

  FROM salgrade

  WHERE emp.sal BETWEEN losal AND hisal );

  此语句查询薪水不在任何建议薪水范围内的所有雇员的名字,工作,薪水和部门名。

  下图5-1显示了一个执行计划的图形表示:

  

0
相关文章