oracle优化规范,sql编写规范和优化(适用于oracle).ppt

sql编写规范和优化(适用于oracle)

皮皮网运维部 2012.10; 一、概述 ; 二、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_namefrom table_namewhere column_name =’xxxxxxxxx’;

2、select a.column1, a.column2, b.column3from table_name_1 a , table_name_2 bwhere a.column1 = b.column2 and b.stat= 2;;--update语句书写的正确示例update table_namesetlist_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','000000000000007807', '0');;2.3、SQL语句编写应遵循以下空格规则

1. SQL语句中不允许出现空行。

2. SQL语句内的算术运算符、逻辑运算符(AND、OR、NOT)、 比较运算符(=、<=、>=、>、、BETWEEN AND)、IN、LIKE等运算符前后都应加一空格。

3. 逗号之后必须接一个空格。

4. 关键字、保留字和左括号之间必须有一个空格。; 三、SQL语句编写规范;6、使用SELECT语句时,禁止使用select * ,应当指出具体查询的字段名,例如:select col1,col2,col3,… from table_name;。

7、使用INSERT语句时,禁止使用 insert into table_name values(?,?,?),不应不指定字段名直接插入VALUES,应指定插入的字段名,例如: insert into table_name (col1, col2,…) values(?,?,…)

8、避免在where使用'1=1','1=2'这种表达式作为部分条件,例如: select col1, col2 from table_name where 1=1 and col1 >0。

9、字符型字段必须加单引号,避免where查询条件做隐型转换时后出现混乱。

10、SQL 语句的注释: 应遵循各语言编码规范的代码注释要求。 对较为复 杂的 SQL语句应注释,并说明算法和功能。 对重要的计算应说明其功能。;四、SQL语句编写过程中的优化建议;尽量避免多表关联查询、特别是表之间的嵌套连接。

尽量使用exists、not exists 替代 in、not in(大部份情况下exists 、not exists的性能都比in 、not in 好)。

使用union 的时候如果没有去除重复数据的要求,建议尽量用union all替代。

尽量避免使用order by和group by排序操作,因为大量的排序操作影响系统性能。如必须使用排序操作,尽量建立在有索引的列上。

索引的建立应慎重考虑,不是越多越好。索引可以提高相应的select的效率,但同时也降低了INSERT、UPDATE 的效率。

Where 条件中的索引列应避免使用<>,not、 is null,is not null、 li

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值