Oracle查询语句优化总结

2 篇文章 0 订阅
2 篇文章 0 订阅
  1. 创建表的时候。应尽量建立主键,尽量根据实际需要调整数据表的PCTFREE和PCTUSED参数;大数据表删除,用truncate table代替delete。
  2. 合理使用索引,在OLTP应用中一张表的索引不要太多。数据重复量大的列不要建立二叉树索引,可以采用位图索引;组合索引的列顺序尽量与查询条件列顺序保持一致;对于数据操作频繁的表,索引需要定期重建,以减少失效的索引和碎片。
  3. 查询语句全部大写。
  4. 使用表的别名,如此能够减少表字段的输入错误,而且多表联查时避免相同字段的歧义。 如select * from vehicle t where t.hpzl='02'
  5. where 后的条件执行时是从后往前,因此能够筛选更多数据的条件排在后面。
  6. 查询尽量用确定的列名,少用*号。比如:select count(key)from tab where key> 0性能优于select count(*)from tab;
  7. 将or换为in。 比如 select * from vehicle where syxz in ('R','O')性能优于select * from vehicle where syxz='R' or syxz='O'
  8. 将>,<替换为>=,<=;
  9. 避免对字段使用函数等操作。比如:使用select * from vehicle where ccdjrq=to_date('2019-1-1','yyyy-mm-dd')而不是         select * from vehicle where to_char(ccdjrq,'yyyy-mm-dd')='2019-1-1'
  10. 尽量少嵌套子查询,这种查询会消耗大量的CPU资源;对于有比较多or运算的查询,建议分成多个查询,用union all联结起来;多表查询的查询语句中,选择最有效率的表名顺序。Oracle解析器对表解析从右到左,所以记录少的表放在右边。
  11. 清空表时使用truncate table xxxx; 而不是delete。(注意:truncate操作不可恢复!)
  12. 尽量多用commit语句提交事务,可以及时释放资源、解锁、释放日志空间、减少管理花费;在频繁的、性能要求比较高的数据操作中,尽量避免远程访问,如数据库链等,访问频繁的表可以常驻内存:alter table...cache;
  13. 在Oracle中动态执行SQL,尽量用execute方式,不用dbms_sql包。

 

参考博客:https://www.cnblogs.com/grl214/p/7694184.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值