SQL优化的方法
来源:互联网 发布:淘宝网游戏道具 编辑:程序博客网 时间:2024/06/05 09:11
1,
select 避免使用* ,尽量明确查询的字段 原因:ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间
2,
TRUNCATE替代DELETE:原因:
当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)
3,
尽量多使用COMMIT: 原因:
只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:
COMMIT所释放的资源:
a. 回滚段上用于恢复数据的信息.
b. 被程序语句获得的锁
c. redo log buffer 中的空间
d. ORACLE为管理上述3种资源中的内部花费
4,
当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.
5,
用EXISTS替代IN、用NOT EXISTS替代NOT IN:
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.
6,
查询字段where条件后面的字段与比较的值类型需要一致,不然会导致全表扫描,例如data型和varchar2类型
7,
查询字段where前面字段尽量不做任何处理,所有的计算处理都放到比较的后面,不然会导致全表扫描 不要在查询字段加上to_data()和to_char()等
- 优化sql的方法
- sql优化的方法
- SQL优化的方法
- SQL语句的优化方法
- SQL语句的优化方法
- SQL Server优化的方法
- SQL语句的优化方法
- Microsoft的优化SQL方法
- Microsoft 的SQL优化方法
- SQL语句的优化方法
- SQL Server优化的方法
- sql优化的一些方法。
- SQL优化的一些方法
- [ORACLE] SQL语句的优化方法
- SQL数据库使用JOIN的优化方法
- SQL数据库使用JOIN的优化方法
- SQL数据库使用JOIN的优化方法
- ORACLE SQL 优化的若干方法
- Android之EventBus3.0的简单用法
- 101. Symmetric Tree
- web.xml配置Session超时时间设置
- Shell脚本控制语句
- 使用graphviz绘制二叉树
- SQL优化的方法
- Vue+Webpack引入Jquery第三方插件,jQuery is not defined 错误,解决方案
- 用C++简单实现的——BlockingQueue类(java)
- win10配置gcc编译环境
- Qt实现打开QQ聊天界面(售后服务)
- Vue.js 过滤器
- nginx入门
- retrofit2.0,上传图片
- ACM必练50题