oracle多層嵌套同義字

來源:互聯網
上載者:User

在Oracle的管理員手冊上,說明可以為表、視圖、物化視圖、過程、函數、包、對象和序列建立同義字。雖然Oracle並沒有明確說明,但是同樣可以為同義字建立同義字。

有些時候建立指向同義字的同義字是有意義的。由於同義字本身功能之一就是實現物理結構和物理位置的透明性,因此使用者在建立同義字的時候並不會太關係當前指向的對象是否是同義字還是其他對象。

Oracle處理指向同義字的同義字只是在解析對象的時候存在很小的代價,其他並沒有太多的影響。

當然如果同義字嵌套的層數過多,也不是很好的設計方式,使用者在確定要訪問真正的對象是會很麻煩,Oracle在分析對象的時候同樣也要花費時間:

SQL> create synonym s1 for t;

同義字已建立。

SQL> create synonym s2 for s1;

同義字已建立。

對於同義字S2來說,就是一個嵌套同義字,指向了同義字S1。如果這種嵌套的層數太多,也會影響分析的效能。比如,一個嵌套了10000層的同義字:

SQL> begin

2  for i in 2..10000 loop

3  execute immediate 'create synonym s' || (i+1) || ' for s' || i;

4  end loop;

5 end;

6  /

PL/SQL過程已成功完成。

SQL> set timing on

SQL> set autot on

SQL> select * from t;

未選定行

經過時間:  00: 00: 00.02

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT ptimizer=CHOOSE

1    0   TABLE ACCESS (FULL) OF 'T'

Statistics

----------------------------------------------------------

0  recursive calls

0  db block gets

3  consistent gets

0  physical reads

0  redo size

267  bytes sent via SQL*Net to client

460  bytes received via SQL*Net from client

1  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

0  rows processed

SQL> select * from s1;

未選定行

經過時間:  00: 00: 00.02

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT ptimizer=CHOOSE

1    0   TABLE ACCESS (FULL) OF 'T'

Statistics

----------------------------------------------------------

0  recursive calls

0  db block gets

3  consistent gets

0  physical reads

0  redo size

267  bytes sent via SQL*Net to client

460  bytes received via SQL*Net from client

1  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

0  rows processed

SQL> select * from s2;

未選定行

經過時間:  00: 00: 00.02

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT ptimizer=CHOOSE

1    0   TABLE ACCESS (FULL) OF 'T'

Statistics

----------------------------------------------------------

0  recursive calls

0  db block gets

3  consistent gets

本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45462.htm

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.