oracle数据库性能优化整体法则:
一、降低数据訪问(降低硬盘房訪问次数)
二、返回更少的数据(降低网络传输或磁盘訪问)
三、降低交互次数(降低网络传输)
四、降低server开销(降低cpu及内存开销)
五、利用很多其它的资源(添加资源)
===================详细说明=================
一、降低数据訪问(降低硬盘房訪问次数)
1、降低数据訪问
1.1.创建并使用正确的索引
索引会大大添加DML(增删改)的开销【合理的索引会大大提高效率100倍、1000倍,但不合理的索引甚至会降低性能100倍】
一个表中能够有多个索引,一个索引也能够由多个字段组成
会使用索引的情况:
index_column>?
index_column<?
index_column=?
index_column>=?
index_column<=?
index_columnbetween ? and ?
index_columnin (?,?...?)
index_columnlike ?||%'(后导模糊查询)
t1.index_column= t2.culunm2(两表通过索引字段关联)
不会使用索引的情况:
index_column<>?
index_columnnot in (?,?...?)
--------------不等于不会使用索引
function(index_column)=?
index_column+1=?
index_column||'aaa'=?
--------------经过普通运算或者函数运算的字段不会使用索引
index_columnis null
----------------索引不保存null值所以is null不会使用索引
index_column=‘12345’
index_column=12345
--------------oracle在进行数值比較时候会将左右两边转换成同样类型,相当于使用了函数。不会使用索引
a.index_column= a.column_!
--------给索引查询的值应该是已知的。未知的是不会使用索引的
常见的索引注意事项:
须要加索引的:
1、主键
2、外键
3、有对象或身份标识意义的字段
慎用索引的:
1、日期
2、年月
3、状态标识
4、区域
5、操作人员
6、数值
7、长字符
不适合用索引的
1、描写叙述备注字段
2、大字段
另外:
常常在一起使用的几个查询字段能够建立组合索引
如:select id,name from company where type='2';
假设常常使用这个能够在id,name,type上建立组合索引;
切记:性能优化无止境。
当达到要求后就要适可而止,切勿物极必反
二、更少的返回数据
1、数据分页处理(client分页、server分页、数据库分页)
2、仅仅返回须要的字段
三、降低交互次数(batch提交。增大fech_size、使用存储过程)
未完待续-------共同学习进步