Oracle还是比较常用的,于是我研究了一下Oracle可选择性,本文比较一下列中唯一键的数量和表中的行数,就可以判断该列的Oracle可选择性,在这里拿出来和大家分享一下,希望对大家有用。
#t#如果该列的”唯一键的数量/表中的行数”的比值越接近1,则该列的Oracle可选择性越高,该列就越适合创建索引,同样索引的Oracle可选择性也越高。在Oracle可选择性高的列上进行查询时,返回的数据就较少,比较适合使用索引查询。
有了这些背景知识后就开始介绍执行计划。为了执行语句,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 );
此语句查询薪水不在任何建议薪水范围内的所有雇员的名字,工作,薪水和部门名。