Oracle資料庫系統使用經驗六則(轉)
1.having 子句的用法
having 子句對 group by 子句所確定的行組進行控制,having 子句條件中只允許涉及常量,聚組函式或group by 子句中的列.
2.外部聯接"+"的用法
外部聯接"+"按其在"="的左邊或右邊分左聯接和右聯接.若不帶"+"運算子的表中的一個行不直接匹配於帶"+"預算符的表中的任何行,則前者的行與後者中的一個空行相匹配並被返回.若二者均不帶’+’,則二者中無法匹配的均被返回.利用外部聯接"+",可以替代效率十分低下的 not in 運算,大大提高執行速度.例如,下面這條命令執行起來很慢
select a.empno from emp a where a.empno not in(select empno from emp1 where job=’SALE’);
倘若利用外部聯接,改寫命令如下:
select a.empno from emp a ,emp1 bwhere a.empno=b.empno(+)and b.empno is nulland b.job=’SALE’;
可以發現,執行速度明顯提高.
3.刪除表內重複記錄的方法
可以利用這樣的命令來刪除表內重複記錄:
delete from table_name awhere rowid< (select max(rowid) from table_namewhere column1=a.column1 and column2=a.column2and colum3=a.colum3 and ...);
不過,當表比較大(例如50萬條以上)時,這個方法的效率之差令人無法忍受,需要另想辦法(可參看拙文《電信計費中長途重複話單的技術處理》,《計算機與通訊》,1999-07).
4.set transaction 命令的用法
在執行大事務時,有時oracle會報出如下的錯誤:
ORA-01555:snapshot too old (rollback segment too small)
這說明oracle給此事務隨機分配的回滾段太小了,這時可以為它指定一個足夠大的回滾段,以確保這個事務的成功執行.例如
set transaction use rollback segment roll_abc;delete from table_name where ...commit;
回滾段roll_abc被指定給這個delete事務,commit命令則在事務結束之後取消了回滾段的指定.
5.使用索引的注意事項
select,update,delete 語句中的子查詢應當有規律地查詢少於20%的錶行.如果一個語句查詢的行數超過總行數的20%,它將不能透過使用索引獲得效能上的提高.
索引可能產生碎片,因為記錄從表中刪除時,相應也從表的索引中刪除.表釋放的空間可以再用,而索引釋放的空間卻不能再用.頻繁進行刪除操作的被索引的表,應當階段性地重建索引,以避免在索引中造成空間碎片,影響效能.在許可的條件下,也可以階段性地truncate表,truncate命令刪除表中所有記錄,也刪除索引碎片.
6.資料庫重建應注意的問題
在利用import進行資料庫重建過程中,有些檢視可能會帶來問題,因為結構輸入的順序可能造成檢視的輸入先於它低層次表的輸入,這樣建立檢視就會失敗.要解決這一問題,可採取分兩步走的方法:首先輸入結構,然後輸入資料.命令舉例如下 (uesrname:jfcl,password:hfjf,host sting:ora1,資料檔案:expdata.dmp):
imp jfcl/hfjf@ora1 file=empdata.dmp rows=Nimp jfcl/hfjf@ora1 file=empdata.dmp full=Y buffer=64000commit=Y ignore=Y
第一條命令輸入所有資料庫結構,但無記錄.第二次輸入結構和資料,64000位元組提交一次.ignore=Y選項保證第二次輸入既使物件存在的情況下也能成功.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-954166/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 學好Oracle資料庫的六條經驗Oracle資料庫
- 用Delphi 開發資料庫程式經驗三則 (轉)資料庫
- oracle資料庫系統管理(轉)Oracle資料庫
- ORACLE資料庫開發經驗Oracle資料庫
- ORACLE使用經驗(轉)Oracle
- 常見資料庫系統之比較 - Oracle資料庫(轉)資料庫Oracle
- 常見資料庫系統比較之Oracle資料庫(轉)資料庫Oracle
- ORACLE資料庫開發經驗總結Oracle資料庫
- Oracle資料庫系統的安全性(轉)Oracle資料庫
- Oracle資料庫學習應用:經驗分享Oracle資料庫
- 更改系統資料庫的排序規則資料庫排序
- oracle資料庫開發的一些經驗Oracle資料庫
- [轉載]Oracle資料庫應用系統調優方法Oracle資料庫
- Oracle資料庫系統緊急故障處理方法(轉)Oracle資料庫
- oracle遷移資料經驗Oracle
- 資料庫從檔案系統轉移至ASM實驗記錄資料庫ASM
- Oracle資料庫遊標使用大全(轉)Oracle資料庫
- JDBC連線資料庫經驗JDBC資料庫
- 資料庫設計經驗談資料庫
- 資料庫從檔案系統轉移至ASM實驗記錄[zt]資料庫ASM
- 在ASP中使用Oracle資料庫(2)(轉)Oracle資料庫
- Oracle記憶體分配經驗法則Oracle記憶體
- Oracle資料庫系統中的引數Oracle資料庫
- Oracle資料庫中的系統引數Oracle資料庫
- 【原創】資料庫從檔案系統轉移至ASM實驗記錄資料庫ASM
- Oracle資料庫使用空間統計案例Oracle資料庫
- Oracle經驗集錦(轉)Oracle
- oracle資料隱式轉換規則Oracle
- 常見資料庫系統之比較 - DB2資料庫(轉)資料庫DB2
- Oracle效能最佳化經驗分享之系統引數設定(轉)Oracle
- 第六章——資料庫系統基礎知識資料庫
- 正則經驗
- oracle實驗-資料庫複製Oracle資料庫
- Oracle使用hanganalyze 命令分析資料庫hang【轉】Oracle資料庫
- 【Oracle】使用hanganalyze 命令分析資料庫hang【轉】Oracle資料庫
- ORACLE資料庫物件與使用者管理(轉)Oracle資料庫物件
- Oracle資料庫資料物件分析(轉)Oracle資料庫物件
- oracle 資料庫全庫恢復實驗Oracle資料庫