SQL编写规范与优化(适用于Oracle).ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、概述 二、SQL编写风格 2.1、SQL语句的大小写 SQL语句的关键字统一使用全小写或全大写的方式,例如: select,update,from,where,order,by,group by declare,begin,end等。 标识符,变量和参数采用小写,如v_sal。 数据库对象、列以及别名用小写。 三、SQL语句编写规范 1、表结构设计的时候尽量选择合适的数据类型、合适的长度、避免行链接、行迁移的出现,外键所在的字段一定要创建索引,否则,对主表进行操作,外键所在的子表有可能被完全封锁。 2、SQL语句的语法应与所使用的数据库相适应。 3、关键SQL语句,尽量简化,不要包含太多的嵌套,避免执行计划错误的可能,原则上不能超过2层。 4、SQL语句包含多表连接时,建议使用表别名,对每个字段的使用都要带上表别名,例如: select a.col1, a.col2, b.col3 from table_name a, tableb b where a.col4=b.col5; 5、多表关联避免超过5个,可以通过临时表(表变量),简化复杂的关联。 四、SQL语句编写过程中的优化建议 应用逻辑复杂时,使用SQL实现困难,尽量使用程序去实现。 建议使用hint固定关键SQL语句执行计划,原则上批量作业要用hint指定索引; 在进行多条记录的增加、修改、删除时,建议使用批量提交,降低事务的提交频度。 SQL语句要绑定变量实现SQL语句的共享,禁止使用常量。 对于分区表的查询,原则上使用分区键做条件; 五、不良sql语句优化 例1:不合理的执行计划,导致cpu使用率过高. select count(*) as rCount from ( select * from PPFILM_COFIG where SID not in (select MOV_ID from pp_code_movs where CODE_ID=3 ) order by idx desc) temp; RCOUNT ------------- 646 Elapsed: 00:00:21.08 * 皮皮网运维部 2012.10 本规范侧重于代码编写过程中SQL语句的编写规范问题,内容涉及编写风格、编写规范、SQL语句编写过程中的优化建议、不良SQL语句的优化等方面。 2.2、SQL语句缩进与换行 sql语句中的关键字右对齐。 select/from/where/order by/group by等子句应独占一行。 select子句内容如果只有一项,应与 select 同占一行。 select子句内容如果多于一项,每一项都应独占一行,并在对应 select的基础上向右缩进8个字符。 from子句内容如果只有一项,应与 from同占一行。 from子句内容如果多于一项,每一项都应独占一行,并在对应from的基础上向右缩进4个字符。 where子句内容如果只有一项,应与 where同占一行。 where子句的条件如果有多项,每一个条件应独占一行,并以and开头,并在对应where的基础上向右缩进4个字符。 update set子句内容每一项单独占一行,无缩进。 insert子句内容每个表字段单独占一行,无缩进;values每一项单独占一行,无缩进 。 SQL语句缩进与换行示例: --select语句书写的正确示例 1、 select column_name from table_name where column_name =’xxxxxxxxx’; 2、 select a.column1, a.column2, b.column3 from table_name_1 a , table_name_2 b where a.column1 = b.column2 and b.stat= 2; --update语句书写的正确示例 update table_name set list_stat = ‘xxx’, parent = ‘xxx’, name=‘xxx’ where list_no = ‘xxx‘ and city=‘xxx’; --Insert语句书写的正确示例 insert into table_name ( list_no, list_stat, parent, manifest_no, div_flag ) values ( bill020, 1, 0, 00000000000000780

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档