关于Oracle优化的28条总结

1、选择最有效率的表名顺序;

2、WHERE子句中的连接顺序;

3、SELECT子句中避免使用"*";

...

  1. 选择最有效率的表名顺序;
  2. WHERE子句中的连接顺序;
  3. SELECT子句中避免使用"*";
  4. 减少访问数据库的次数;
  5. 删除重复记录;
  6. 用TRUNCATE替代DELETE;
  7. 尽量多使用COMMIT:回滚段上用于恢复数据的信息、被程序语句获得的锁、redo log buffer 中的空间、ORACLE为管理上述3种资源中的内部花费;
  8. 用Where子句替换HAVING子句;
  9. 减少对表的查询;
  10. 通过内部函数提高SQL效率;
  11. 使用表的别名(Alias);
  12. 用EXISTS替代IN、用NOT EXISTS替代NOT IN;
  13. 识别'低效执行'的SQL语句;
  14. 用索引提高效率;
  15. 用EXISTS替换DISTINCT;
  16. sql语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行;
  17. 避免在索引列上使用NOT、IS NULL和IS NOT NULL、函数、计算和类型转换;
  18. 用>=替代>;
  19. 用UNION替换OR (适用于索引列);
  20. 用IN来替换OR;
  21. 总是使用索引的第一个列;
  22. 用UNION-ALL 替换UNION ( 如果有可能的话);
  23. 用WHERE替代ORDER BY;
  24. 避免改变索引列的类型;
  25. 需要当心的WHERE子句(+、||、!=将停用索引,相同索引的列不能比较);
  26. 如果检索数据量超过30%的表中记录数,使用索引将没有显著的效率提高,但在通常情况下,使用索引比全表扫描要快几倍乃至几千倍;
  27. 避免使用耗费资源的操作:DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎。执行耗费资源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要执行两次排序. 通常, 带有UNION, MINUS , INTERSECT的SQL语句都可以用其他方式重写. 如果你的数据库的SORT_AREA_SIZE调配得好, 使用UNION , MINUS, INTERSECT也是可以考虑的, 毕竟它们的可读性很强;
  28. 优化GROUP BY:将不需要的记录在GROUP BY 之前过滤掉;

你可能感兴趣的:(oracle,sql,优化)