Oracle中SQL性能优化
一:函数使用会造成效率上的不同
decode函数相当于case when 但是decode从效率上来讲是强于case when的,但是从个人使用的角度来说case when的使用可以更加多样化,这一点强于decode,两者的选择还是从现实中抉择。
删除数据的角度来说,可以使用 truncate和delete和drop,从效率来说truncate最快,这是将数据对应的表空间都直接删除了,delete只是删除数据,并未删除表空间,drop虽然也能达到删除数据的效果,不过将会把表都一起删除。
删除语句慎用!!!!!
执行完删除语句最后删除或是注释,否则一个失误将会造成严重后果!!
二:in、not in 和exists、not exists效率上的不同
如果查询的两个表大小差不多,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表比主表大的用exists,子查询表比主表小的用in
如果查询语句使用了not in,那么对内外表都进行全表扫描,没有用到索引;而not exists的子查询依然能用到表上的索引。所以无论哪个表大,用not exists都比not in 要快
三:SQL语句的规范性也会造成效率的不同
在oracle中执行SQL,总是会先解析SQL,会将小写字母转换成大写字母,所以