SQL书写风格

SQL书写风格
1. SQL语句全部使用小写。★
2. 引用字符时用单引号。如:update testable set idcol=’abcd’。 ★
3. 连接符或运算符or、in、and、=、<=、>=, +,- 等前后加上一个空格。
4. 严禁使用select * …….形式的语句,必须指出select的具体字段,即select col1, col2,… from tablea where ….★
5. 严禁使用 insert into table values(?,?,?),必须指出具体要赋值的字段,即 insert into tablea (col1, col2,…) values(?,?,…)★
6. SQL语句包含多表连接时,建议对每个表命名别名,对每个字段的使用都要带上表别名,即 select a.col1, a.col2, b.col3 from tablea a, tableb b where a.col4=b.col5
7. 避免隐含的类型转换。例如在where子句中numeric 型和int型的列的比较或相加。★
8. 读取是指通过JDBC读到的数据格式,保存是指保存在VO中的数据格式,插入或者更新是指insert或者update语句中的数据格式。
a) 整型字段:读取时根据字段设置保存为Integer或者Long。
b) 数字型字段:读取为BigDecimal,并保存为UFDouble,插入或者更新时为BigDecimal。
c) 字符型字段:读取为String,并保存为String,插入或者更新为String。
d) 布尔型字段:读取为String(‘Y’ OR ‘N’),并保存为UFBoolean,插入或者更新时为String(‘Y’ OR ‘N’)。
e) 时间字段:读取为String,并保存为UFDateTime,插入或者更新时的时间格式由中间件统一处理,有单独需求的要申请后才能决定。
9. 在子查询中前后必须加上括号, select col1, col2 from tablea where col3 in ( select col4 from tableb where col4>0)★
10. 避免在where使用'1=1','1=2'这种表达式作为部分条件,如 select col1, col2 from tablea where 1=1 and col1 >0。
11. 禁止使用视图。★
17.2.1.3. 性能优化
1. 尽量使用prepareStatement,利用预处理功能。
2. 在进行多条记录的增加、修改、删除时,建议使用批处理功能,批处理的次数以整个SQL语句不超过相应数据库的SQL语句大小的限制为准。
3. 建议每条SQL 语句中in中的元素个数在500以下,如果个数超过时,应拆分为多条SQL语句。禁止使用xx in(‘’,’’….) or xx in(‘’,’’,’’)。★
4. 禁止使用or 超过 500,如 xx =’123’ or xx=’456’。 ★
5. 尽量不使用外连接。
6. 禁止使用not in 语句,建议用not exist。★
7. 禁止使用Union, 如果有业务需要,请拆分为两个查询。★
8. 禁止在一条SQL语句中使用3层以上的嵌套查询,如果有,请考虑使用临时表或中间结果集。★
9. 尽量避免在一条SQL语句中从>= 4个表中同时取数,对于仅是作为过滤条件关联,但不涉及取数的表,不参与表个数计算;如果必须关联4个或4个以上表,尽量采用子查询的方式。
10. 尽量避免使用order by和group by排序操作,因为大量的排序操作影响系统性能。如必须使用排序操作,尽量建立在有索引的列上。
11. 对索引列的比较,尽量避免使用NOT 或 !=,可以考虑拆分为几个条件。如col1 是索引列,条件col1 !=0 可以拆分为col1 >0 or col2 <0
12. 任何对列的操作都将导致表扫描,所以应尽量将数据库函数、计算表达式写在逻辑操作符右边。
13. 在对char类型比较时,建议不要使用rtrim()函数,应该在程序中将不足的长度补齐。
14. 用多表连接代替EXISTS子句。
15. 如果有多表连接时,应该有主从之分,并尽量从一个表取数, 如select a.col1, a.col2 from a join b on a.col3=b.col4 where b.col5 = ‘a’。
16. 在where子句中,如果有多个过滤条件,应将索引列或过滤记录数最多的条件应该放在前面。
17. 在使用Like时,建议Like 的一边是字符串,表列在一边出现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值