•
Sql必须使用绑定变量(由于特殊业务逻辑不适合使用绑定变量的,需要得到DBA确认)
;
•
Sql
中变量的类型必须与字段定义一致;
•
查询分区表时,条件要使用上分区字段,并且最好为闭区间
,如:
ordertime >= sysdate - 1 / 24 and ordertime <= sysdate,需要注意的是该区间需满足业务需要
•
Sql
条件中使用时间类型字段的,变量要声明为字符串并写成
to_date
()
的形式来使用;
•
避免索引字段上进行计算操作或者嵌套函数;
•
能使用
UNION ALL
的不要使用
UNION
;
•
用
EXISTS
替代
IN
、用
NOT EXISTS
替代
NOT IN
;
•
用
EXISTS
替换
DISTINCT
;
•只取自己所需要的列;
•
Sql
条件中禁止直接对日期字段列使用函数和运算,保证条件中的左边就只是日期字段列,比如:
trunc
(
not_after_time
- TO_DATE(:1,'YYYY-MM-DD') , 0)<=:2,
最好修改为
not_after_time
< ?;
•
使用
DECODE
函数或
case when
来减少查询次数或重复连接相同的表;
•
禁止使用
select * from tab
,必须明确的写出列名;
•
使用
DECODE
函数来减少查询次数或重复连接相同的表;
•
总是使用索引的第一个列(指复合索引);
•
需要使用
hint
的(由
DBA
确认给出),请勿随意删除修改
hint
的内容、位置(需保证语句中只有一个
hint
,且紧跟在
select
后面,表如果使用了别名,
hint
中也使用别名);
•
用
>=
替代
>
;
批量dml操作必须使用批量提交的方式(1万条1 commit);