熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle 數據庫系統使用經驗六則

2013-11-13 16:04:53  來源: Oracle 

   having 子句的用法
   having 子句對 group by 子句所確定的行組進行控制having 子句條件中只允許涉及常量聚組函數或group by 子句中的列
   外部聯接+的用法
   外部聯接+按其在=的左邊或右邊分左聯接和右聯接若不帶+運算符的表中的一個行不直接匹配於帶+預算符的表中的任何行則前者的行與後者中的一個空行相匹配並被返回若二者均不帶+則二者中無法匹配的均被返回利用外部聯接+可以替代效率十分低下的 not in 運算大大提高運行速度例如下面這條命令執行起來很慢
  select aempno from emp a where aempno not in(select empno from emp where job=SALE);
   倘若利用外部聯接改寫命令如下:
  select aempno from emp a emp b where aempno=bempno(+) and bempno is null and bjob=SALE;
   可以發現運行速度明顯提高
  刪除表內重復記錄的方法
   可以利用這樣的命令來刪除表內重復記錄:
  delete from table_name a where rowid< (select max(rowid) from table_name where column=lumn and column=lumn and colum=lum and );
   不過當表比較大(例如萬條以上)時這個方法的效率之差令人無法忍受需要另想辦法(可參看拙文《電信計費中長途重復話單的技術處理》《計算機與通信》)
   set transaction 命令的用法
   在執行大事務時有時oracle會報出如下的錯誤:
  ORA:snapshot too old (rollback segment too small)
   這說明oracle給此事務隨機分配的回滾段太小了這時可以為它指定一個足夠大的回滾段以確保這個事務的成功執行例如
  set transaction use rollback segment roll_abc;delete from table_name where mit;
   回滾段roll_abc被指定給這個delete事務commit命令則在事務結束之後取消了回滾段的指定
   使用索引的注意事項
   selectupdatedelete 語句中的子查詢應當有規律地查找少於%的表行如果一個語句查找的行數超過總行數的%它將不能通過使用索引獲得性能上的提高
   索引可能產生碎片因為記錄從表中刪除時相應也從表的索引中刪除表釋放的空間可以再用而索引釋放的空間卻不能再用頻繁進行刪除操作的被索引的表應當階段性地重建索引以避免在索引中造成空間碎片影響性能在許可的條件下也可以階段性地truncate表truncate命令刪除表中所有記錄也刪除索引碎片
  數據庫重建應注意的問題
   在利用import進行數據庫重建過程中有些視圖可能會帶來問題因為結構輸入的順序可能造成視圖的輸入先於它低層次表的輸入這樣建立視圖就會失敗要解決這一問題可采取分兩步走的方法:首先輸入結構然後輸入數據命令舉例如下 (uesrname:jfclpassword:hfjfhost sting:ora數據文件:expdatadmp):
  imp jfcl/hfjf@ora file=empdatadmp rows=Nimp jfcl/hfjf@ora file=empdatadmp full=Y buffer= commit=Y ignore=Y
   第一條命令輸入所有數據庫結構但無記錄第二次輸入結構和數據字節提交一次ignore=Y選項保證第二次輸入既使對象存在的情況下也能成功
From:http://tw.wingwit.com/Article/program/Oracle/201311/17776.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.