1、针对大数据量的,避免使用 or 操作
select*from user_info where username like ‘yue%’ or username like '%yue'
可优化成:
select*from user_info where username like ‘yue%’
union
select*from user_info where username like '%yue'
2、除非必要,否则不要在关键词前加%,加了必然走全表扫描
3、使用“临时表”暂存中间结果避免程序中多次扫描主表,也大大减少了程序执行中“共享锁”阻塞“更新锁”,减少了阻塞,提高了并发性能
4、统一SQL语句的写法
select*from dual
select*From dual
其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析。生成2个执行计划。所以作为程序员,应该保证相同的查询语句在任何地方都一致,多一个空格都不行!
5、不要以字符格式声明数字,要以数字格式声明字符值。(日期同样)否则会使索引无效,产生全表扫描。
SELECT emp.ename, emp.job FROM emp WHERE emp.empno = 7369;
不要使用:SELECT emp.ename, emp.job FROM emp WHERE emp.empno = '7369'
6、SELECT子句中避免使用 ‘ * ‘:
ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间