Oracle-SQL开发的经验总结

本文提供了一系列SQL优化建议,包括使用绑定变量、确保变量类型匹配、合理利用分区字段、正确处理时间类型字段等,旨在帮助开发者编写高效、易维护的SQL查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值