论坛到底有没有Oracle数据库专家?
深圳gg 2016-01-13 10:29:46 今天在csdn首页上看到一篇文章:数据库性能优化之SQL语句优化 http://blog.csdn.net/u011225629/article/details/50492403
很多内容都是胡说八道,列几点出来
文章在哪里抄的,很多都是错的,我先把错误的离谱的随便列出来,如果你反驳,我就给出例子。
1.在业务密集的SQL当中尽量不采用IN操作符,用EXISTS 方案代替。--在oracle 10g之后,两个的执行计划其实就一样了,就说两个的性能都一样了。
2.NOT IN和NOT EXISTS两个含义都不一样,如果not in 后面的子查询中有Null值,是没有数据的。
3.is not null的语句优化器是不允许使用索引的SQL> select count(1) from test where object_id is not null;
执行计划
----------------------------------------------------------
Plan hash value: 3841213438
-----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 5 | 651 (3)| 00:00:08 |
| 1 | SORT AGGREGATE | | 1 | 5 | | |
|* 2 | INDEX FAST FULL SCAN| IND_T_OBJECT_ID | 1054K| 5151K| 651 (3)| 00:00:08 |
-----------------------------------------------------------------------------------------
4.WHERE子句后面的条件顺序对大数据量表的查询会产生直接的影响。查询表顺序的影响。
WHERE子句中的连接顺序
20年前RBO时代是这样,过时了。
5.尽量多使用COMMIT,commit越频繁,性能越低。
6.用IN来替换OR,经过查询转换后,都是一样的了。