oracle多层嵌套同义词

在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

时间: 2024-10-27 00:30:48

oracle多层嵌套同义词的相关文章

两种方法访问多层嵌套的frame

访问 ======================================== 在您的网站拜读了关于TWebBrowser的使用方法,但是一直有一个问题困扰我,就是如何取得frame嵌套frame的HTML的原码,我只是知道单个frame如何取得源码,但是多个frame嵌套就没有办法,请教一下! 答======================================== 要得到源代码,必须先得到frame.访问frame一般说来有两种方法: 1.通过WebBrowser的文档接口

如何递归处理多层嵌套列表

建立一个多层列表(即列表中存储列表)并输出列表项 如下图: 可以看出输出的只是输出了外列表 当然也可以多次循环输出每一个子项:如下图所示 返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/ 注:isinstance(object, classinfo)为python的内置函数,用来判断对象的类型 这是三层循环,如果是很多次循环再用for循环输出就太麻烦了, 对于这种情况需要建立一个函数,递归循环输出子项 如下图

Android中Fragment多层嵌套时onActivityResult无法正确回调问题的解决方法_Android

前言: Fragment也可以使用startActivityForResult方法去打开一个Activity,然后在其onActivityResult方法中处理结果,可是当Fragment嵌套的时候,由于FragmentActivity的BUG导致只会回调最外那层Fragment的onActivityResult方法,于是乎当前Fragment就收不到结果了. BUG分析: 解决这个问题之前我们先通过源码分析一下是什么原因导致的,以22.2.1版本的support-v4库为例 我们先从Fragm

前端-正则表达式,如何match多层嵌套的括弧

问题描述 正则表达式,如何match多层嵌套的括弧 有一个字符串,存在多对括号,他们可能是并列关系,也可能是嵌套关系,like this: 今年的雨水比较多(除了夏季(夏季天气炎热)),降雨量是往年的130%(特别是在江南地区) 现在要把最外层的第一对括号match出来,也就是要得到(除了夏季(夏季天气炎热))正则表达式怎么写? 解决方案 正则没弄过,分析比较简单 var sc = '(' ec = ')' count = 0 rst = []c; var s = '今年的雨水比较多(除了夏季(

多层嵌套条件编译-怎样在Eclipse CDT设置自动缩进格式,来显示多层嵌套的条件编译?

问题描述 怎样在Eclipse CDT设置自动缩进格式,来显示多层嵌套的条件编译? 我正在用Eclipse CDT阅读一个非常大型项目的代码,代码中含有大量的嵌套的条件编译 #if #else #end 而且嵌套得非常深,最深的嵌套竟然高达10层多. 由于前面的程序员编写的代码没有注意缩进格式,导致后面的程序员接手这些代码,看到 这么复杂的代码,完全眼花了,逻辑完全乱了. 让我举一个稍微简单的例子来说明问题吧, 如下图是一个嵌套层次不是太深的例子: 大部分程序员看到这里,都得停顿下来,研究一下到

android 开发 json多层嵌套解析

问题描述 android 开发 json多层嵌套解析 向那种单层的数组我就会解析,向这种多层的我就不会了,都说是一层一层往下解析,就是不会,求大神指点,不要用Gson之类的框架,那些我会,谢谢 { "OK": 0, "obj": { "list": [ { "id": "8005285", "tour": { "id": "87962435", &

GridView多层嵌套和折叠与展开(修改适合自己使用)_实用技巧

Insus.NET近段时间应朋友的要求,写一个GridView多层嵌套和折叠与展开.这个功能的GridView多层嵌套没有问题,因为已经做了无限次数,但是折叠与展开的功能,却花上不少时间(网上找资料),虽找到资料可参考,还是了解明它,并修改适合自己程序使用.效果如下: 站点中多个页面使用,因此Insus.NET把它写在一个用户自定义控件ASCX上. 复制代码 代码如下: InsusMenu.ascx <%@ Control Language="VB" AutoEventWireu

asp.net提取多层嵌套json数据的方法_实用技巧

本文实例讲述了asp.net提取多层嵌套json数据的方法.分享给大家供大家参考,具体如下: 在.net 2.0中提取这样的json: 复制代码 代码如下: {"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}} 引用命名空间: using Newtonsoft.Json; using Newtons

Android Fragment多层嵌套重影问题的解决方法_Android

1解决bug的思想: //step1:当bug被发现(排除极低偶然性,单次性,开发工具导致) //step2:根据经验判断bug的重现场景,多次测试,直到精准的定位bug //step3:根据重现场景找到对应的代码 //step4:分析区域代码是否会影响到其他功能. //step5:做好数据的备份工作.(做好代码重构和恢复的准备,这样你才能肆无忌惮的捣鼓代码) //step6:修复代码的过程中,你会发现可能有多种解决方案.试着采取不影响主线的解决方案.以免影响到其他的代码. //step7:回顾