30
2016
11

oracle - SQL优化规则

1.CBO模式下,表从右到左查询,右边第一个为基础表,选择行数的少作为基础表,三个及三个以上的表,需要选择交叉表(连接另外两个表的表)作为基础表,

2.数据量大的时候,使用exists 而非 in

3.where,自下而上的解析where子句,过滤数据记录的条件写在where字句的尾部,以便在过滤了数据之后在进行表连接处理(即 a.name='张三'的写后面,再让a表中字段name为'张三'的数据去跟b表关联)
select * from table_name a,ccc b where a.column =b.column and a.deptno in(20,30) and a.name='张三'

4.使用decode

语句块使用短路径,if( aa > 100) or (bb = 'cc'),第一个对了,就不会走进第二个,if( 1 = 2) and ( a in(1,2,3,4,5))如果第一个就不满足的话,也不会走进第二个,所以将开销较低的放前面

5.避免隐式类型的转换,把pls_integer复制给number时,会出现隐式转换

« 上一篇 下一篇 »