oracle优化思考-双刃剑,oracle优化双刃剑
oracle优化是一个双刃剑,特别注意这把剑用的场合:系统规划OLTP or OLAP
优化1:索引
在DML操作时,必须维护索引,如果大量的DML操作,想想看,IO是不是老高了?
索引优点:在很多时候能提高查询速度,减低IO负载
优化2:
主键使用序列,而序列的cache大小设置
如果cache设置的小,有可能造成DML锁
如果cache设置的大,DB异常关机后,已经发出的但是未提交的cache数会被丢弃,这样就造成主键的不连续
----未完(持续更新)
楼上的错了,楼主的已经很优化了, guyuchi的回答开销比楼主的SQL要大。
最关键的在 IN 和 OR 这些关键字的使用上,尽量用IN
这里能优化的地方,在DNAME字段上建索引能改善一些性能,数据量小的时候没效果。
这个大数据量跟小数据量还是有区别的。
.去掉不必要的大型表的全表扫描
2.缓存小型表的全表扫描
3.检验优化索引的使用
4.检验优化的连接技术
5.尽可能减少执行计划的Cost
在含有子查询的SQL语句中,要特别注意减少对表的查询.例子:
SELECT EMP_NO FROM EMP WHERE (GROUP,NAME) = ( SELECT
COLUMN1,COLUMN2 FROM TEST WHERE TEST_ID = 604)
最高效的删除重复记录方法 ( 因为使用了ROWID)例子:
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
sql语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行
在java代码中用到preparedStatement的时候尽量少用连接符“+”连接字符串!