oracle數據庫性能優化總體法則:
一、減少數據訪問(減少硬盤房訪問次數)
二、返回更少的數據(減少網絡傳輸或磁盤訪問)
三、減少交互次數(減少網絡傳輸)
四、減少服務器開銷(減少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、數據分頁處理(客戶端分頁、服務器分頁、數據庫分頁)
2、只返回需要的字段
三、減少交互次數(batch提交,增大fech_size、使用存儲過程)
未完待續-------共同學習進步