如何减少对数据库的访问次数来加快sql执行
答案:2 悬赏:0 手机版
解决时间 2021-04-06 05:43
- 提问者网友:浮克旳回音
- 2021-04-05 06:38
如何减少对数据库的访问次数来加快sql执行
最佳答案
- 五星知识达人网友:duile
- 2021-04-05 07:09
当执行每条SQL语句时, ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等等. 由此可见,
减少访问数据库的次数 , 就能实际上减少ORACLE的工作量.
例如,
以下有三种方法可以检索出雇员号等于0342或0291的职员.
方法1 (最低效)
SELECt
EMP_NAME , SALARY , GRADE
FROM EMP
WHERe EMP_NO = 342;
SELECt EMP_NAME , SALARY , GRADE
FROM EMP
WHERe
EMP_NO = 291;
方法2 (次低效)
DECLARE
CURSOR C1 (E_NO
NUMBER) IS
SELECt EMP_NAME,SALARY,GRADE
FROM EMP
WHERe
EMP_NO = E_NO;
BEGIN
OPEN C1(342);
FETCH C1 INTO …,..,..
;
…..
OPEN C1(291);
FETCH C1 INTO …,..,.. ;
CLOSE C1;
END;
方法3 (高效)
SELECt A.EMP_NAME ,
A.SALARY , A.GRADE,
B.EMP_NAME , B.SALARY , B.GRADE
FROM EMP
A,EMP B
WHERe A.EMP_NO = 342
AND B.EMP_NO = 291;
减少访问数据库的次数 , 就能实际上减少ORACLE的工作量.
例如,
以下有三种方法可以检索出雇员号等于0342或0291的职员.
方法1 (最低效)
SELECt
EMP_NAME , SALARY , GRADE
FROM EMP
WHERe EMP_NO = 342;
SELECt EMP_NAME , SALARY , GRADE
FROM EMP
WHERe
EMP_NO = 291;
方法2 (次低效)
DECLARE
CURSOR C1 (E_NO
NUMBER) IS
SELECt EMP_NAME,SALARY,GRADE
FROM EMP
WHERe
EMP_NO = E_NO;
BEGIN
OPEN C1(342);
FETCH C1 INTO …,..,..
;
…..
OPEN C1(291);
FETCH C1 INTO …,..,.. ;
CLOSE C1;
END;
方法3 (高效)
SELECt A.EMP_NAME ,
A.SALARY , A.GRADE,
B.EMP_NAME , B.SALARY , B.GRADE
FROM EMP
A,EMP B
WHERe A.EMP_NO = 342
AND B.EMP_NO = 291;
全部回答
- 1楼网友:摆渡翁
- 2021-04-05 07:18
你好!
使用存贮过程,将多个SQL放在一起执行。
仅代表个人观点,不喜勿喷,谢谢。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯