在创建一个视图时,没有明确指定列,但后来发现oracle自动给我指定了列,而且顺序还不正确,请问这是为什么,是oracle还是PL/Sql做的?创建视图脚本如下:
create view test
as
select a.a_col_a,b.* from a,b;当时使用pl/sql工具创建后查看该视图没问题,但过阵后(应该没其他特别操作)创建该视图的脚本变为了:
create view test
(a_col_a,b_col_a,b_col_b)
as
select a.a_col_a,b.* from a,b;甚至有可能是:
create view test
(a_col_a,b_col_b,b_col_a)
as
select a.a_col_a,b.* from a,b;请问这是为什么?
初来贵地,无分,忘见谅!

解决方案 »

  1.   

    Oralce优化中有一种是自动把select * 优化为字段再进行检索
    我想这是Oralce优化的结果
    避免每次在对这个视图检索的时候重新进行select * => select A,B,C…… from XXX 的转化
    不是很确定,只是猜测,以前确实没注意过
    楼主很细心,赞
      

  2.   

    多谢` 我也是发现结果不对后才注意到的,呵呵。
    优化固然是好事,但不甚清楚oracle机制,
    不知道它自动“优化”后,为什么字段顺序会改变呢?
    如果真是自动优化,那是不是可以有选项控制不进行优化,可能在小数据量的情况下都不用考虑这些性能问题。
      

  3.   

    我只能这么说
    Oralce在绝大部分的情况下,比我们要聪明
    请相信Oracle的优化选择
      

  4.   

    我到不是质疑oracle的优化。
    我关心的只是我的视图字段顺序为什么被改变了,
    当然,也不排除是我自己使用了某些操作后造成的,但就是一直找不到原因!