- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL 语句优化基础
DECLARE n NUMBER; BEGIN n := n + 15; -- converted n := n + 15.0; -- not converted ... END; 避免隐含的数据类型转换 PL/SQL 在执行时隐含进行不同数据类型转换 Example: 当传递 PLS_INTEGER 给 NUMBER 变量时 strings dates numbers 理解 NOT NULL 约束 Oracle 系统 对 Not Null 解释 : 非空值,必需有值 NULL 在 Oracle 系统是不能解释其意义的值,比如: NULL=NULL是不成立的 Null+数字=NULL Null||字符=字符 SQL select 123+null from dual; 123+NULL ---------- SQL select abc||null from dual; AB --- abc 理解 NOT NULL 约束 Not Null 也影响到性能 : 10g/11g 多次循环 --可将循环次数加大或减少 set timing on SQL DECLARE 2 value1 NUMBER NOT NULL := 0; 3 BEGIN 4 FOR cnt IN 0 .. 1000000000 LOOP 5 value1 := 1; 6 END LOOP; 7 END; 8 / PL/SQL 过程已成功完成。 已用时间: 00: 00: 31.26 --可将循环次数加大或减少 set timing on declare value1 number; begin for cnt in 0 .. 100000000 loop value1 := 1; end loop; if value1 is not null then null; end if; end; / PL/SQL 过程已成功完成。 已用时间: 00: 00: 16.78 每次代入值前都要检测是否是非空 只需要最后对 NULL检查一次 用 PLS_INTEGER 处理整数 处理整数( integer data)使用 PLS_INTEGER : PLS_Integer比 integer 变量更高效 PLS_Integer比 INTEGER 或 NUMBER存储更省 PLS_Integer 在运行时直接采用机器的算法(machine arithmetic), 这种算法比( library arithmetic)更快 可以替代整数的NUMBER型的变量定义,而实际的处理效率是比NUMBER型更快捷 用 PLS_INTEGER 处理整数 PLS_INTEGER PL/SQL数据类型: 使用NUMBER类型的情况: SQL set serveroutput on SQL declare 2 ln_number number; 3 begin 4 dbms_output.put_line(to_char(SYSTIMESTAMP,yyyymmdd hh24:mi:ss.ff3)); 5 for n_row in 1..100000000 loop 6 ln_number := ln_number + 1; 7 end loop; 8 dbms_output.put_line(to_char(SYSTIMESTAMP,yyyymmdd hh24:mi:ss.ff3)); 9* end; SQL /14:37:57.48414:38:00.453 PL/SQL 过程已成功完成。 用 PLS_INTEGER 处理整数 PLS_INTEGER PL/SQL数据类型: 使用PLS_INTEGER类型的情况: --优化后:用PLS_INTEGER: SQL declare 2 ln_number pls_integer; 3 begin 4 dbms_output.put_line(to_char(SYSTIMESTAMP,yyyymmdd hh24:mi:ss.ff3)); 5 for n_row in 1..100000000 loop 6 ln_number := ln_number + 1; 7 end loop; 8 dbms_output.put_line(to_char(SYSTIMESTAMP,yyyymmdd hh24:mi:ss.ff3)); 9 end
您可能关注的文档
- SK-3Q04氢焰色谱仪使用说明书.doc
- SMC快速排气阀AQ系列.ppt
- 国有企业法概要.ppt
- SDF5000电气火灾监控系统应用设计说明书V2.0.docx
- sky第二节__自然地理环境的差异性(讲课课件).ppt
- SMT内部教育 1.pptx
- 国画清新风格动态PPT概要.ppt
- 国画精品教案概要.doc
- SM-DP-ZX 带根管长度测定功能的根管扩大机使用说明.ppt
- SL gallery 意品廊进口卫浴产品介绍.ppt
- 吉安县公开招聘专职文明实践员笔试备考试题及答案解析.docx
- 2025重庆枫叶国际学校招聘教师笔试备考试题及答案解析.docx
- 游机队电玩自制联网教程-tplink.pdf
- 2025重庆新华出版集团招聘1人笔试模拟试题及答案解析.docx
- 2025宜宾高新丽雅城市产业发展有限公司公开招聘笔试模拟试题及答案解析.docx
- 2025云南保山市龙陵县勐糯镇人民政府招聘合同制专职消防员1人笔试模拟试题及答案解析.docx
- 11.1生活中常见的盐 九年级化学人教版下册.pptx
- 6.1法律保护下的婚姻 高二政治《法律与生活》课件(统编版选择性必修2)(新版).pptx
- 文昌市中小学教师校园招聘29人笔试模拟试题及答案解析.docx
- 10.1.5 常见的酸和碱(第5课时)课件-九年级化学人教版下册.pptx
文档评论(0)