【正文】
句里的字段建議建立索引;14:用來和其他表關聯(lián)的字段建議建立索引;15:索引字段建議有高的選擇性和過濾性(count(distinctid)/count(*));16:在where子句里作為函數(shù)參數(shù)的字段,不能創(chuàng)建索引,不建議建立函數(shù)索引。17:建立索引的時候,建議考慮到SELECT和INSERT,UPDATE,DELETE的平衡;18:一般建議在查詢數(shù)據(jù)量10%以下使用索引;19:WHERE子句的查詢條件構成索引字段前導字段;選擇性更高的字段放在組合字段索引的前導字段;如果字段選擇性接近,則把頻繁查詢的字段放在前面;如果字段查詢頻率相同,則把表中的數(shù)據(jù)的排列順序所依據(jù)的字段放在前面;20:進行GROUP BY或者是ORDER BY的字段應在組合字段索引的前導字段;21:所有序列應設置CACHE值為不低于10022:如果要求獲得的字段具有強連續(xù)和強排序性,則不適宜使用序列23:視圖中不允許出現(xiàn)ORDER BY排序24:基于多表關聯(lián)的視圖,必須在字段名前指定表別名;視圖的基礎數(shù)據(jù)盡量從表中獲取,盡量不要嵌套視圖25:存儲過程,必須有異常捕獲代碼 在存儲過程中變量的聲明集中在AS和BEGIN中完成,不允許在代碼中隨意定義變量。完成相同功能模塊的變量放在一起,不同模塊一空行隔開。存儲過程中嚴禁使用GOTO語句進行跳轉有循環(huán)更新的存儲過程,必須進行批量提交,且必須進行事務控制存儲過程中如果打開了dblink,則在存儲過程正?;蛘弋惓M顺霰仨氷P閉所有打開的dblink存儲過程中如果使用了游標,則在存儲過程正?;蛘弋惓M顺霰仨氷P閉所有打開的游標存儲過程中如果有更新,必須在異常捕獲代碼中做回退操作。異常處理時,把收集機到的錯誤信息計入錯誤日志表。pl/sql 使用短路徑法,當計算邏輯表達式,即:一旦確定后,pl/sql 停止計算表達式。26:函數(shù)中,如果進行了事務處理,必須有異常捕獲代碼函數(shù)盡量只是實現(xiàn)復雜的計算功能,不對數(shù)據(jù)庫進行更新操作27:一次UPDATE多個字段的時候,應一次查詢完成技巧1:觸發(fā)器盡量考慮內部代碼過程封裝,用過程封裝sql,減少解析次數(shù)。create or replace procedure p_test_tri(p_deptno in number)as begin insert into test_tri_tab2 (deptno,t) values (p_deptno,1)。end。/create or replace trigger test_tab2_triggerafter insert on test_tri_tab1for each rowbegin p_test_tri(:)。end test_tri_tab2_trigger。/2:避免動態(tài)sql,動態(tài)sql在執(zhí)行過程中變異,普通sql在過程執(zhí)行前就已經編譯過了 。等價靜態(tài)語句替換動態(tài)sql3:OLTP系統(tǒng)盡量使用綁定變量,sql在shared_pool中完成邏輯優(yōu)化,物理優(yōu)化,生成計劃等一系列動作select x from t where x=:x。4:減少對sysdate,mod的調用,避免sql中的函數(shù)調用,大量遞歸調用影響性能。可以改用表關聯(lián)來代替函數(shù)調用。函數(shù)調用有代價。