Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

ORACLE 优化sql语句提高oracle执行效率 PDF 下载


分享到:
时间:2020-05-28 15:30来源:http://www.java1234.com 作者:小锋  侵权举报
ORACLE 优化sql语句提高oracle执行效率 PDF 下载
失效链接处理

ORACLE 优化sql语句提高oracle执行效率 PDF 下载
 

本站整理下载:
提取码:zirj 
 
 
相关截图:
 
主要内容:

(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): 
 
Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在
 
FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表
 
(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表。 
 
(2)WHERE子句中的连接顺序: 
 
Oracle采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录
 
的条件必须写在WHERE子句的末尾。 
 
(3)SELECT子句中避免使用‘*’: 
 
Oracle在解析的过程中, 会将‘*’依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间。
 
(4)减少访问数据库的次数: 
 
Oracle在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等。 
 
(5)在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为200。 
 
(6)使用DECODE函数来减少处理时间: 
  使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表. 
例如: 
   SELECT COUNT(*),SUM(SAL) 
   FROM EMP 
   WHERE DEPT_NO = 0020 
   AND ENAME LIKE ‘SMITH%’; 
  
   SELECT COUNT(*),SUM(SAL) 
   FROM EMP 
   WHERE DEPT_NO = 0030 
   AND ENAME LIKE ‘SMITH%’;  
你可以用DECODE函数高效地得到相同结果 
  
SELECT COUNT(DECODE(DEPT_NO,0020,’X’,NULL)) D0020_COUNT, 
        COUNT(DECODE(DEPT_NO,0030,’X’,NULL)) D0030_COUNT, 
        SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL, 
        SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL 
FROM EMP WHERE ENAME LIKE ‘SMITH%’; 
类似的,DECODE函数也可以运用于GROUP BY 和ORDER BY子句中. 
 
 

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐