• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Oracle 數據庫系統使用經驗

    發表于:2007-07-13來源:作者:點擊數: 標簽:
    1.having 子句的用法 having 子句對 group by 子句所確定的行組進行控制 ,having 子句條件中只允許涉及常量 , 聚組函數或 group by 子句中的列 . 2. 外部聯接 "+" 的用法 外部聯接 "+" 按其在 "=" 的左邊或右邊分左聯接和右聯接 . 若不帶 "+" 運算符的表中的
    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 b

    where a.empno=b.empno(+)

    and b.empno is null

    and b.job='SALE';

    可以發現 , 運行速度明顯提高 .

    3. 刪除表內重復記錄的方法

    可以利用這樣的命令來刪除表內重復記錄 :

    delete from table_name a

    where rowid< (select max(rowid) from table_name

    where column1=a.column1 and column2=a.column2

    and colum3=a.colum3 and ...);

    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=N

    imp jfcl/hfjf@ora1 file=empdata.dmp full=Y buffer=64000

    commit=Y ignore=Y

    第一條命令輸入所有數據庫結構 , 但無記錄 . 第二次輸入結構和數據 ,64000 字節提交一次 .ignore=Y 選項保證第二次輸入既使對象存在的情況下也能成功 .



      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>