编写sql语句的最终目标有3个方面:1.快速响应时间 2.最少使用cpu资源,3最少的I/O操作
促进最佳sql 的一些提示
*在I/O 的观点来看使用索引没有意义时鼓励进行全表扫描
如果索引扫描访问的块比全表扫描的多时,使用全表扫描非常有效
*如果sql包含了子查询,则优化它们.事实上,应首先优化它们.如果子查询不能很好的执行,主查询也不能很好的执行.如果一个连接将提供子查询的功能,则在试图使用子查询方法之前,应首先试试连接方法.请注意关联子查询,因为它们的代价很高且cpu使用频繁.
*在sql语句的where 条件中使用 not exists 代替 not in
*使用有前导字符的like 运算符来代替substr函数.有前导字符(如在被比较值中的'A%')的 like运算符将使用索引.
substr函数将使索引无效,除非数据库的版本时oracle8i 并且已经建立了一个基于函数的索引
--未完--